最近公司一直没事情做,就开始逛论坛关注一些东西。无意中又看到了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相关推荐

  1. HACK RF学习之旅记录3——安装WIN10+Ubuntu双系统

    鉴于之前的gnuradio运行例程FM声音卡顿,gprx采样率8M也卡顿,尝试安装双系统做一些工作,顺便学习下原生系统里面日常生存. 1 安装Ubuntu19.10 在WIN系统下搜了下例程大致明白, ...

  2. 【我的OpenGL学习进阶之旅】【持续更新】关于学习OpenGL的一些资料

    目录 一.相关书籍 OpenGL 方面 C方面 NDK 线性代数 二.相关博客 2.0 一些比较官方的链接 2.1 OpenGL着色器语言相关 2.2 [[yfan]](https://segment ...

  3. 【我的OpenGL学习进阶之旅】介绍一下 绘制图元

    目录 一.绘制图元 1.1 `glDrawArrays` 1.1.1 `glDrawArrays`API说明 1.1.2 `glDrawArrays`API示例 1.2 `glDrawElements ...

  4. 【我的OpenGL学习进阶之旅】C++如何加载TGA文件?

    一.TGA文件相关介绍 通过前面的博客 [我的OpenGL学习进阶之旅]什么是TGA文件以及如何打开TGA文件? 地址:https://ouyangpeng.blog.csdn.net/article ...

  5. AD学习之旅(1)— Altium Designer 20 软件下载与安装

    AD学习之旅(1)- Altium Designer 20 软件下载与安装 一.前言 本次软件安装参考自:Altium Designer 20 AD20软件安装详解教程 凡亿 Altium公司推荐的系 ...

  6. 【我的OpenGL学习进阶之旅】OpenGL ES 3.0新功能

    目录 1.1 纹理 1.2 着色器 1.3 几何形状 1.4 缓冲区对象 1.5 帧缓冲区 OpenGL ES 2.0 开创了手持设备可编程着色器的时代,在驱动大量设备的游戏.应用程序和用户接口中获得 ...

  7. Triangle学习之旅——下载与安装

    Triangle学习之旅1 0 Triangle简介 Triangle是一款简单好用但是功能强大的网格剖分程序,可以将任意二维图形根据需要剖分为三角网格,其源程序为免费程序,只有很小的几个C语言程序, ...

  8. 【我的OpenGL学习进阶之旅】着色器和程序(上)------着色器

    着色器和程序 一.前言 二.着色器和程序 2.1 创建和编译一个着色器 2.1.1 创建着色器 2.1.2 删除着色器 2.1.3 提供着色器源代码 2.1.4 编译色器 2.1.4 查询有关着色器对 ...

  9. 无星的RN学习之旅(四)——通信、持久化存储、iOS打包

    说说最近项目的一些感想吧. 一.RN的创意 RN其实我觉得是一个很有创意的想法.不知道各位写RN项目的时候,有没有打开Xcode看过app的层级关系,我发现RN的这个想法,真的很有创意. 作为一名原生 ...

  10. vue3学习之旅--邂逅vue3-了解认识Vue3(二)

    续上文: vue3学习之旅–邂逅vue3-了解认识Vue3 计数器案例(体验Vue) <div id="app"></div><script src= ...

最新文章

  1. 高品质摄影作图台式计算机推荐,浅谈高质量摄影照片后期输出的打印机选择
  2. 如何计算Java对象所占内存的大小
  3. 哈哈哈,程序员没有女朋友的原因,我终于找到了!
  4. java post get 请求
  5. atitit.为什么java体系开发效率这样低的原因and解决
  6. c-free显示运行程序错误怎么办_Mac电脑没声音了怎么办?解决Mac上声音问题
  7. python黑白方格画
  8. 伦敦大学计算机研究生雅思要求,伦敦TOP10大学的雅思入学要求来了!
  9. kafka单条消息太大引起的线上故障
  10. Unity Serialization 序列化
  11. 一只青蛙跳向三个台阶_题目描述: k一只青蛙一次可以跳上1级台阶,也可以跳上2级。求该青蛙跳上一个n级的台阶总共有多少种跳法。...
  12. python求特征值以及特征向量,并且输出最小特征值对应的特征向量
  13. 《关于TCP SYN包的超时与重传》——那些你应该知道的知识(四)
  14. rjs子模板中如何按照顺序并且有序列地执行语句
  15. 677_AUTOSAR_TR_Methodology_文档阅读4
  16. 力挺 Linux 是一种怎样的体验?
  17. 并不是只有 Redis 才可以做缓存
  18. 过去,我买漫画看;现在,我用Python爬虫来看
  19. DaVinci Resolve Studio v18.0.0.10 达芬奇调色专业剪辑、调色、 特效和音频后期制作
  20. ARM寄存器R13/R14/R15

热门文章

  1. 宝塔nginx自编译云锁web防护教程
  2. 采购很容易,油水又多?那你来啊
  3. RMAN高级应用_pizi.pdf
  4. 汽车汽配行业SaaS多租户系统助力车企打通行业壁垒,构建数字化管理平台
  5. 解决Access数据库突然变得很大的方法
  6. kafka消费端Attempt to heartbeat failed since group is rebalancing
  7. 射频工程师——中兴笔试题
  8. 使用Matlab将多个图形Figure文件合并
  9. 24个关键词致敬科比系列之——凌晨四点
  10. Web 通信 之 长连接、长轮询