码迷,mamicode.com
首页 > Windows程序 > 详细

Freeglut Windows Programming on NetBeans

时间:2015-04-14 02:02:59      阅读:265      评论:0      收藏:0      [点我收藏+]

标签:

在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已经出现在系统的环境变量中。

技术分享

在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++编译器的包含目录下,依据下图的最后四行进行设置:

技术分享

在最后四行中,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中对项目按右键,点属性,在弹出的窗口中依下图设置链接属性:

技术分享

上图中,其他库目录选%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

标签:

原文地址:http://blog.csdn.net/sarkuya/article/details/45033419

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!