openGL学习之旅(一)DEV-C++安装GLUT
最近公司一直没事情做,就开始逛论坛关注一些东西。无意中又看到了android游戏引擎的资料,于是突发奇想的开始想学下openGL。个人感觉这个应该是学习游戏引擎的一个基础吧。刚好最近也在看《the c programming language》,所以打算从C语言入手学习opengl.
也许java做久了,特别的不喜欢微软的开发界面,所以决定用自己比较喜欢的DEV-C++。
DEV-C++起源于贝尔实验室,但是很久以前版本更新到4.9.9.2。便不更新了,后来有两个衍生产品代替了。
DEV-C++ 自带的有openGL的示例程序。文件-》新建-》工程-》multMedia-》OpenGL,便可以构建一个OpenGL的demo,编译运行之后是一个在不断旋转的三角形。
网上搜了一些openGl入门的资料,其中推荐使用GLUT工具包,据说能带来很多的方便。
于是开始给DEC-C++安装GLUT。
下载GLUT的glut-3.7.6-bin,里面有几个文件
把glut.h 拷贝到DEV-C++的安装目录下面的 ..\include\GL 下面。
glut.def拷贝到 lib 文件夹下面。
glut32.dll拷贝到 系统 C:\Windows\System32 下面。
然后新建一个项目
#define GLUT_DISABLE_ATEXIT_HACK
#include <windows.h>
#include <GL/glut.h>const int A = 500; /* length of a side of the monitor window */
const float B = 500; /* length of a side of the clipping rectangle */
const float C = 200; /* length of a side of the square the program draws */void myinit(void)
{glClearColor(0.7, 0.7, 0.7, 0.0); /* gray background */glMatrixMode(GL_PROJECTION); /* In World coordinates: */glLoadIdentity(); /* position the "clipping rectangle" */gluOrtho2D( -B/2, B/2, -B/2, B/2);/* at -B/2, its right edge at +B/2, its bottom */glMatrixMode(GL_MODELVIEW); /* edge at -B/2 and its top edge at +B/2 */
}void display( void )
{glClear(GL_COLOR_BUFFER_BIT); /* clear the window */glMatrixMode(GL_MODELVIEW); /* The following coordinates are expressed */glLoadIdentity(); /* in terms of World coordinates */glBegin(GL_POLYGON) ; /* draw a filled polygon */glColor3f ( 1.0, 0.3, 0.2); /* draw in light red */glVertex2f( -C/2, -C/2 ); /* (x,y) */glVertex2f( C/2, -C/2 ); /* (x,y) */glVertex2f( C/2, C/2 ); /* (x,y) */glVertex2f( -C/2, C/2 ); /* (x,y) */glEnd();glFlush(); /* send all commands */
}int main(int argc, char** argv)
{glutInit(&argc,argv);glutInitWindowSize( A, A ); /* A x A pixel screen window */glutInitDisplayMode( GLUT_RGB | GLUT_SINGLE);glutCreateWindow("My Rectangle"); /* window title */glutDisplayFunc(display); /* tell OpenGL main loop what */myinit(); /* set attributes */glutMainLoop(); /* pass control to the main loop */return 0;
}
这里要提醒一下:
#define GLUT_DISABLE_ATEXIT_HACK
#include <windows.h>
这两行是必须带有的,如果不加上,编译的时候会包错误:50 E:\Program Files\DEV-CPP\include\GL\glut.h redeclaration of C++ built-in type `short'
加上之后仍旧不能编译,需要做一下设置。
工程-》工程选项-》参数 添加三个文件 libglu32.a 、 libglut32.a 、libopengl32.a
这三个文件都在DEV-C++的安装目录中的lib文件夹中。
然后编译运行
结果如下:
这里就结束了opengl学习的第一步了。
----------------------------------------------------------------------------------------分割线-------------------------------------------------------------------------
如何安装GLUT,google老师给了很多可用的资料。但是每次编译总是出现:50 E:\Program Files\DEV-CPP\include\GL\glut.h redeclaration of C++ built-in type `short' ,着实让我纠结了很久。最后在这里找打的答案点击打开链接。具体那两行添加的代码
#define GLUT_DISABLE_ATEXIT_HACK
#include <windows.h>
是什么意思,没有搜到具体的解释,根据名称推断,应该是忽略一些错误信息吧……
openGL学习之旅(一)DEV-C++安装GLUT相关推荐
- HACK RF学习之旅记录3——安装WIN10+Ubuntu双系统
鉴于之前的gnuradio运行例程FM声音卡顿,gprx采样率8M也卡顿,尝试安装双系统做一些工作,顺便学习下原生系统里面日常生存. 1 安装Ubuntu19.10 在WIN系统下搜了下例程大致明白, ...
- 【我的OpenGL学习进阶之旅】【持续更新】关于学习OpenGL的一些资料
目录 一.相关书籍 OpenGL 方面 C方面 NDK 线性代数 二.相关博客 2.0 一些比较官方的链接 2.1 OpenGL着色器语言相关 2.2 [[yfan]](https://segment ...
- 【我的OpenGL学习进阶之旅】介绍一下 绘制图元
目录 一.绘制图元 1.1 `glDrawArrays` 1.1.1 `glDrawArrays`API说明 1.1.2 `glDrawArrays`API示例 1.2 `glDrawElements ...
- 【我的OpenGL学习进阶之旅】C++如何加载TGA文件?
一.TGA文件相关介绍 通过前面的博客 [我的OpenGL学习进阶之旅]什么是TGA文件以及如何打开TGA文件? 地址:https://ouyangpeng.blog.csdn.net/article ...
- AD学习之旅(1)— Altium Designer 20 软件下载与安装
AD学习之旅(1)- Altium Designer 20 软件下载与安装 一.前言 本次软件安装参考自:Altium Designer 20 AD20软件安装详解教程 凡亿 Altium公司推荐的系 ...
- 【我的OpenGL学习进阶之旅】OpenGL ES 3.0新功能
目录 1.1 纹理 1.2 着色器 1.3 几何形状 1.4 缓冲区对象 1.5 帧缓冲区 OpenGL ES 2.0 开创了手持设备可编程着色器的时代,在驱动大量设备的游戏.应用程序和用户接口中获得 ...
- Triangle学习之旅——下载与安装
Triangle学习之旅1 0 Triangle简介 Triangle是一款简单好用但是功能强大的网格剖分程序,可以将任意二维图形根据需要剖分为三角网格,其源程序为免费程序,只有很小的几个C语言程序, ...
- 【我的OpenGL学习进阶之旅】着色器和程序(上)------着色器
着色器和程序 一.前言 二.着色器和程序 2.1 创建和编译一个着色器 2.1.1 创建着色器 2.1.2 删除着色器 2.1.3 提供着色器源代码 2.1.4 编译色器 2.1.4 查询有关着色器对 ...
- 无星的RN学习之旅(四)——通信、持久化存储、iOS打包
说说最近项目的一些感想吧. 一.RN的创意 RN其实我觉得是一个很有创意的想法.不知道各位写RN项目的时候,有没有打开Xcode看过app的层级关系,我发现RN的这个想法,真的很有创意. 作为一名原生 ...
- vue3学习之旅--邂逅vue3-了解认识Vue3(二)
续上文: vue3学习之旅–邂逅vue3-了解认识Vue3 计数器案例(体验Vue) <div id="app"></div><script src= ...
最新文章
- 高品质摄影作图台式计算机推荐,浅谈高质量摄影照片后期输出的打印机选择
- 如何计算Java对象所占内存的大小
- 哈哈哈,程序员没有女朋友的原因,我终于找到了!
- java post get 请求
- atitit.为什么java体系开发效率这样低的原因and解决
- c-free显示运行程序错误怎么办_Mac电脑没声音了怎么办?解决Mac上声音问题
- python黑白方格画
- 伦敦大学计算机研究生雅思要求,伦敦TOP10大学的雅思入学要求来了!
- kafka单条消息太大引起的线上故障
- Unity Serialization 序列化
- 一只青蛙跳向三个台阶_题目描述: k一只青蛙一次可以跳上1级台阶,也可以跳上2级。求该青蛙跳上一个n级的台阶总共有多少种跳法。...
- python求特征值以及特征向量,并且输出最小特征值对应的特征向量
- 《关于TCP SYN包的超时与重传》——那些你应该知道的知识(四)
- rjs子模板中如何按照顺序并且有序列地执行语句
- 677_AUTOSAR_TR_Methodology_文档阅读4
- 力挺 Linux 是一种怎样的体验?
- 并不是只有 Redis 才可以做缓存
- 过去,我买漫画看;现在,我用Python爬虫来看
- DaVinci Resolve Studio v18.0.0.10 达芬奇调色专业剪辑、调色、 特效和音频后期制作
- ARM寄存器R13/R14/R15