前言
GLUT/freeglut 是什么? OpenGL 和它们有什么关系?
OpenGL只是一个标准,它的实现一般自带在操作系统里,只要确保显卡驱动足够新就可以使用。如果需要在程序里直接使用OpenGL,会有很多非常恶心的预备工作要做,而且可能还要专门为平台的差异写一些代码。要跳过这些工作,可以用一个utility库,直接使用它提供的函数,就不用操心那些细节了。这样的库新一点的有GLEW,因为开源所以安装相对方便(大不了丢进去一起编译),但各种教程和书里常见的是闭源的GLUT。由于GLUT的作者已经很久没更新过了(最后更新于2000年!= =),所以其他人另外做了一个接口兼容GLUT的freeglut,开源而且一直在维护中。【3】
环境
Window10、gcc version 6.3.0 (MinGW.org GCC-6.3.0-1)、glut库(下载地址:http://www.opengl.org/resources/libraries/glut/glutdlls37beta.zip)
、freeglut库(下载地址:http://freeglut.sourceforge.net/index.php#download)、cmake工具(下载地址:https://cmake.org/download/)
步骤
第一、glut库的配置和使用
- 将下载的压缩包解开,将得到5个文件
- 在“我的电脑”中搜索“gl.h”,并找到其所在文件夹(如果是VisualStudio2005,则应该是其安装目录下面的“VC\PlatformSDK\include\gl文件夹”)。把解压得到的glut.h放到这个文件夹。
- 把解压得到的glut.lib和glut32.lib放到静态函数库所在文件夹(如果是VisualStudio2005,则应该是其安装目录下面的“VC\lib”文件夹)。
- 把解压得到的glut.dll和glut32.dll放到操作系统目录下面的system32文件夹内。(典型的位置为:C:\Windows\System32)参考【1】
- 将glut32.dll放入
C:\Windows\SysWOW64
其中,第5步目的是为了防止win10操作系统中找不到glut32.dll,无法继续执行代码的问题,可能与平台位数有关。
- 新建程序,参考【1】
#include <GL/glut.h>
void myDisplay(void)
{
glClear(GL_COLOR_BUFFER_BIT);
glRectf(-0.5f, -0.5f, 0.5f, 0.5f);
glFlush();
}
int main(int argc, char *argv[])
{
glutInit(&argc, argv);
glutInitDisplayMode(GLUT_RGB | GLUT_SINGLE);
glutInitWindowPosition(100, 100);
glutInitWindowSize(400, 400);
glutCreateWindow("第一个OpenGL程序");
glutDisplayFunc(&myDisplay);
glutMainLoop();
return 0;
}
- 编译
gcc -o a.exe .\main.c -lglut32 -lopengl32
否则会出现很多编译问题,可参考【2】。
第二、freeglut库的配置和使用【4】
-
下载freeglut源码
下载地址如上。 -
下载cmake工具
cmake工具用于辅助编译过程。
使用cmake工具和本地c/c++编译器,编译freeglut库,生成Windows平台下的Visual Studio的项目。
注:其中选择Visual Studio版本部分就选自己电脑上的版本即可。 -
使用Visual Studio编译freeglut项目
点击.sin文件,直接生成解决方案即可。
可以在freeglut_build\bin\Debug
和freeglut_build\lib\Debug
下看到相应的freeglutd.dll和freeglutd.lib文件。 -
按照类似于glut库的放置位置,将这库中的头文件和这两个文件放入相应位置
-
测试freeglut配置结果
除了把头文件换成#include <GL/freeglut.h>
之外,代码都不用变。