Windows环境下MinGW之OpenGL配置

  • Post author:
  • Post category:其他


近来开始学习OpenGL,编译环境采用的是

MinGW64

(推荐大家使用此版本,因为该版本既可以编译64位又能够编译32位程序)。才刚开始做第一个例子时,就卡壳了。原来MinGW64自带的OpenGL并不好使(也有可能是我编译的方式不对),如果这块都无法走通,何谈继续学习OpenGL呢?

遍寻方法,终于在

Transmission Zero

此网站上找到解决办法。这里直接贴出方法,经过实践确实有效:

1. 下载

freeglut

,这个版本是已经编译好的freeglut。freeglut是glut的超集,支持glut所有的api,跨平台(MS-Win,Linux,Mac OS均支持),并且有长期维护,十分可靠。

2. 将freeglut/include的内容复制到mingw下的include文件夹下,freeglut/lib文件中,根据所安装的mingw版本(本机安装的64位,所以复制的是x64文件下的),复制相应版本的.a文件,到mingw下的lib文件夹下。另外freeglut/bin文件夹下,如果为64位系统,则将x64的内容复制到

C:\Windows\SysWOW64

下,如果为32位,则将对应的dll复制到

C:\Windows\System32

内。

3. 使用静态编译OpenGL程序。

g++ -c -o main.o main.cpp -D FREEGLUT_STATIC -I"D:\Program Files\mingw-w64\x86_64-6.2.0-posix-seh-rt_v5-rev0\mingw64\x86_64-w64-mingw32\include"

将“-I”后的内容替换为MinGW的include路径

g++ -o main.exe main.o -L"D:\Program Files\mingw-w64\x86_64-6.2.0-posix-seh-rt_v5-rev0\mingw64\x86_64-w64-mingw32\lib" -lfreeglut_static -lopengl32 -lwinmm ^-lgdi32 -Wl,--subsystem,windows

将“-L”后的内容替换为MinGW的lib路径

4. 提供一段测试代码:

#include <stdlib.h>
#include <GL/glut.h>

void keyboard(unsigned char key, int x, int y);
void display(void);


int main(int argc, char** argv)
{
    glutInit(&argc, argv);
    glutCreateWindow("GLUT Test");
    glutKeyboardFunc(&keyboard);
    glutDisplayFunc(&display);
    glutMainLoop();

    return EXIT_SUCCESS;
}


void keyboard(unsigned char key, int x, int y)
{
    switch (key)
    {
    case '\x1B':
        exit(EXIT_SUCCESS);
        break;
    }
}


void display()
{
    glClear(GL_COLOR_BUFFER_BIT);

    glColor3f(1.0f, 0.0f, 0.0f);

    glBegin(GL_POLYGON);
    glVertex2f(-0.5f, -0.5f);
    glVertex2f(0.5f, -0.5f);
    glVertex2f(0.5f, 0.5f);
    glVertex2f(-0.5f, 0.5f);
    glEnd();

    glFlush();
}

最后是我们的结果:



版权声明:本文为u010312740原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。