Windows环境下MinGW之OpenGL配置

近来开始学习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 
#include 

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();
}

最后是我们的结果:

  
OpenGL.png

你可能感兴趣的:(Windows环境下MinGW之OpenGL配置)