MinGW配置OpenGL(Windows10)
参考链接:
https://www.transmissionzero.co.uk/computing/using-glut-with-mingw/ (力荐!)
https://www.cnblogs.com/joyeecheung/p/4310487.html
http://www.mamicode.com/info-detail-495096.html
开工前
MinGW的安装参考另一篇博客:https://www.cnblogs.com/chap-xw/p/13944947.html
未进行过有关Opengl的任何配置,现检查相关内容
MinGW的安装目录下,include目录下有GL文件夹,里面有gl.h、glext.h、glu.h三个头文件
lib目录下有libglu32.a、libopengl.a、libglaux.a、libgdi32.a
System32文件夹里有glu32.dll,opengl32.dll
SystWOW64文件夹里有glu32..dll,opengl32.dll
下载GLUT
按照如下步骤在OpenGL官网寻找GLUT下载链接
点击GLUT
惊喜!不再维护了,找不到了下载链接了
但是还是能下载···
http://www.opengl.org/resources/libraries/glut/glutdlls37beta.zip
比我还古老啊···
还有其他的下载链接:
https://user.xmission.com/~nate/glut.html
两种方式下载的内容不太一样···
在这就用最原始的版本了
操作
首先将glut.h复制到MinGW/include/GL目录下
接下来要注意,这里的glut32.lib库文件虽然是以lib为后缀,是MSVC标准的,而MinGW中都是以.a为后缀的库文件
但是可以直接使用
将glut32.lib复制到MinGW/lib目录下
(刚开始还以为要把.lib文件转换为.a文件,需要MinGW的bin目录下的reimp.exe,pexports.exe,dlltool.exe等程序,而我只有一个dlltool.exe,可能是因为当初在线安装MinGW时只选了最基本的选项,所以需要从其他地方下载另外两个程序,这里把链接给出来,说不定以后会用到
https://sourceforge.net/projects/mingw/files/MinGW/Extension/pexports/pexports-0.47/
https://sourceforge.net/projects/mingw/files/MinGW/Extension/mingw-utils/)
要运行的opengl文件:
#include <stdlib.h>
#include <GL/glut.h>
void init();
void display();
int main(int argc, char* argv[])
{
glutInit(&argc, argv);
glutInitDisplayMode(GLUT_RGB | GLUT_SINGLE);
glutInitWindowPosition(0, 0);
glutInitWindowSize(300, 300);
glutCreateWindow("OpenGL 3D View");
init();
glutDisplayFunc(display);
glutMainLoop();
return 0;
}
void init()
{
glClearColor(0.0, 0.0, 0.0, 0.0);
glMatrixMode(GL_PROJECTION);
glOrtho(-5, 5, -5, 5, 5, 15);
glMatrixMode(GL_MODELVIEW);
gluLookAt(0, 0, 10, 0, 0, 0, 0, 1, 0);
}
void display()
{
glClear(GL_COLOR_BUFFER_BIT);
glColor3f(1.0, 0, 0);
glutWireTeapot(3);
glFlush();
}
命令行输入以下命令
gcc opengl.c -lglut32 -lopengl32 -lglu32
-lglut32 -lopengl32 -lglu32缺一不可
报错
在源文件中第一行加上
#include <windows.h>
再次输入命令,编译成功
生成一个可执行文件
双击运行
报错
原因是还没复制glut32.dll文件
复制到C:\Windows\SysWOW64目录下
再次运行
附录
附上一些GLUT的常用链接···
https://www.opengl.org/resources/libraries/glut/spec3/spec3.html
https://www.opengl.org/resources/libraries/glut/faq/
https://www.opengl.org/resources/libraries/glut/glut-3.spec.pdf
glut32.dll是为微软封装的,官方的
glut.dll是sgi封装的
顺便说一句,SGI也有在windows环境下的opengl驱动,里面的库文件名改了一下,去掉了32:opengl.lib和glu.lib。
glut.h包含了gl.h和glu.h的引用,所以不需要再include后两个,但是必须有这三个头文件在GL文件夹中