09月24, 2014

记录一下对OpenGL环境的理解

注意:这是一篇从旧博客恢复的文章。

原地址:http://freemeepo.com/blog/archives/162

注:有更新


这学期开了门课,叫计算机图形学,上了两节课,加上我查阅的一些资料,对OpenGL有了一些理解,现在记录下来,也可以加深印象。如果在以后的学习过程中发现有错误,会再回来修改的。

首先要知道OpenGL是做什么的。OpenGL是程序与显卡驱动沟通的桥梁,所以我们写的OpenGL程序实际上是在使用OpenGL给出的接口,操作显卡驱动,再通过显卡驱动操作显卡。所以OpenGL本身是很小的。

UPDATE: 这里少复制两段,因为以前的错误实在太多,但又找不太到合适的语言去重写,所以干脆放弃了。

用codeblocks新建OpenGL工程之后会自带一个sample程序,观察此程序发现没有main函数而只有一个叫做WinMain的函数。因为OpenGL不自带窗口、控制等等与系统API有关的东西,所以我们需要GLUT。

GLUT(OpenGL Utility Toolkit)是一个处理OpenGL程式的工具库,负责处理和底层操作系统的呼叫以及I/O。而且它也是跨平台的。我们用GLUT就可以很方便地绘制图形。要用GLUT需要安装相应的.dll和.lib文件,并且在程序中include头文件glut.h。

不过GLUT在1998年之后就不再更新了,freeglut可以作为它的一个替代,同样开源且目前还在更新中。

在x64 Windows中用codeblocks+MinGW32写GLUT工程的方法:

首先下载glut所需的文件,下面链接中的压缩包共有5个文件,分别是glut.h, glut.lib, glut.dll, glut32.lib, glut32.dll. 我们只需要glut.h, glut32.lib, glut32.dll,至于glut与glut32的区别,还没搞清楚,但是如果链接glut而不是glut32的话,会报错丢失opengl.dll。

安装流程:

  1. 将glut.h放入MinGW\include\GL中。

  2. 将glut32.lib放入MinGW\lib中。

  3. 将glut32.dll放入Windows\SysWOW64中(而不是System32中,因为MinGW32是32位的,编译的程序也是32位的)此步操作也可以替换成将glut32.dll放入工程的编译出exe的目录内,一般来说也就是工程的bin\Debug目录下。

  4. 新建GLUT工程,GLUT目录选择MinGW目录即可。

  5. 在工程中打开build options,在linker settings中对link libraries选择MinGW\lib\glut32.lib文件添加,建议使用绝对路径,因为这样移动工程的位置也能正常运行,因为相对路径是相对于工程所在文件夹所说的。此步骤可以省略,猜测是因为lib文件在默认的MinGW\lib中,不需要显式指定lib文件位置。有待考证。

  6. 添加#include <windows.h>,注意它必须要在#include <GL/glut.h>之前。至于网上所说的#define GLUT_DISABLE_ATEXIT_HACK我不加也没有遇到过什么问题。

  7. build and run,sample程序成功运行。

还没有尝试在linux使用GLUT,以后会尝试一下的。

参考资料:

math.h的实现

GLUT安装过程

OpenGL中gl,glu,glut的区别

GLUT下载(下载glutdlls37beta.zip即可)

32位和64位操作系统与System,System32,Syswow64的区别

本文链接:https://debug.fanzheng.org/post/understanding-of-opengl-environment.html

-- EOF --

Comments

评论加载中...

注:如果长时间无法加载,请针对 disq.us | disquscdn.com | disqus.com 启用代理。