Freeglut Windows Programming on NetBeans

在Windows下使用freeglut来开发OpenGL应用过程中,有诸多不便:

  • Windows下Cygwin的OpenGL有两种实现方式. 一是win32api方式,但这种方式并不支持freeglut. 另一种方式虽支持freeglut,但只适用于X Windows系统。
  • Freeglut官方的版本不能直接使用,需先进行相对复杂的编译后方何使用。
  • MinGW下倒有一个直接实现的方式。但不能直接适用于Cygwin.
  • NetBeans有一个JOGL插件,但其只适用于Java语言,反倒丧失了C/C++的高效。

笔者使用Cygwin而非MinGW,且钟情于NetBeans而非Visual Studio,经过一番研究,找出了在基于Cygwin的NetBeans中使用freeglut来开发OpenGL应用的方法。

安装Cygwin的opengl及win32api组件

通过Cygwin安装完opengl及win32api组件后,在 %CygwinRoot%\usr\include\win32api\GL路径下面将出现gl.h, glaux.h, glew.h, glu.h, wglew.h等几个文件,当然,还没有freeglut.h头文件。

下载并配置freeglut

Transmission Zero维护着freeglut的MSVC及MinGW两个版本。MSVC版本专门针对微软的Visual Studio而设计,我们下载其MinGW版本。

为避免我们自行下载的freeglut与cygwin的组件混杂,可另外新建一个目录,如C:\freeglut。然后,将freeglut-MinGW.zip压缩文件中的include及lib两个文件夹复制到该目录中。bin文件夹下各有一个32位及64位的freeglut.dll文件。根据操作系统是32位或64位,将其复制到相应位置。对于32位的Windows,将bin\freeglut.dll复制到C:\windows\system32中。对于64位的Windows,将bin\x64\freeglut.dll复制到C:\Windows\SysWOW64中。

然后,确保C:\windows\system32或C:\Windows\SysWOW64已经出现在系统的环境变量中。

Freeglut Windows Programming on NetBeans_第1张图片

在NetBeans中配置freeglut

在NetBeans中新建一个C/C++应用程序,在main.cpp中输入下面的代码:

/* * File: main.cpp * Author: Sarkuya * * Created on 2015年4月13日, 下午23:13 */

#include <GL/freeglut.h>

void display() {
    glClear(GL_COLOR_BUFFER_BIT);
    glBegin(GL_POLYGON);
        glVertex2f(-0.5, -0.5);
        glVertex2f(-0.5,  0.5);
        glVertex2f( 0.5,  0.5);
        glVertex2f( 0.5, -0.5);
    glEnd();
    glFlush();
}

int main(int argc, char** argv) {
    glutInit(&argc, argv);
    glutCreateWindow("Freeglut Demo");
    glutDisplayFunc(display);
    glutMainLoop();
}

在Cygwin的两种OpenGL实现中,我们将使用win32api的方式。

点击NetBeans的菜单工具->选项,在弹出的窗口中选择C/C++,代码帮助->C++编译器的包含目录下,依据下图的最后四行进行设置:

Freeglut Windows Programming on NetBeans_第2张图片

在最后四行中,C:\cygwin64\usr\include\w32api及C:\cygwin64\include\w32api必须先出现在C:\cygwin64\usr\include之前,这样,可确保我们优先使用win32api的实现方式。倒数第2行直接将我们手工设置的freeglut的include目录添加进来,当我们在代码中包含”GL/freeglut.h”时,NetBeans自动在此目录下查找该文件。

将freeglut的包含目录设进NetBeans的环境而非特定项目属性的好处在于,以后在NetBeans中新建每个OpenGL应用,均可直接在代码中编写glut的语句了。

在NetBeans中对项目按右键,点属性,在弹出的窗口中依下图设置链接属性:

Freeglut Windows Programming on NetBeans_第3张图片

上图中,其他库目录选%FreeglutRoot%\lib\x64,告诉NetBeans,freeglut的库所在的目录。在编译行的其他选项中,需要设置四个选项。其中前面三个是与OpenGL相关的,表示链接时需使用freeglut, glu32, opengl32这三个库。第四个选项”-Wl,–subsystem,windows”Windows下独有的选项,表示此应用将以窗口方式而非命令行的方式来运行。

上面的配置,产生了下面的g++在链接时所用的命令行:

g++ -o dist/Debug/Cygwin_4.x-Windows/opengltest build/Debug/Cygwin_4.x-Windows/main.o -L../../../../Tools/Programming/FreeGlut/lib/x64 -lfreeglut -lglu32 -lopengl32 -Wl,--subsystem,windows

两相结合,更易于理解NetBeans的配置原理。

运行应用

运行此应用程序,将出现经典的OpenGL应用窗口:

结语

虽说这已经是OpenGL过时的未使用Shading Language的编程方式了,但本文的目的在于强调在特定环境中进行OpenGL应用开发。明白了这个原理,可帮助我们方便地进一步学习OpenGL编程。

你可能感兴趣的:(Freeglut Windows Programming on NetBeans)