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.alibopengl.alibglaux.alibgdi32.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:WindowsSysWOW64目录下

再次运行

附录

附上一些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文件夹中

天将降大任于是人也,必先苦其心志,劳其筋骨,饿其体肤,空乏其身,行拂乱其所为,所以动心忍性,曾益其所不能。
原文地址:https://www.cnblogs.com/chap-xw/p/13945590.html