freeglut在wxWidgets下的安装和使用

wxWidgets支持OpenGL,只需要在编译选项中配置 --with-opengl

但是OpenGL提供的图形接口太少,为了便于开发,有一个Glut的库,但是这个似乎不常用了,还好有开源的freeglut,现在大家普遍使用。于是我就选择它吧!

安装很简单,解压gz package以后,有README和INSTALL文件。

./autogen.sh

 ./configure

make

如果不是root,运行su

make install

 

在编译的时候,修改makefile,添加 -lglut就可以了

g++ -o cube cube_cube.o   `wx-config --libs gl,core,base`  -lglut

 

在cpp文件中,wxwidgets没有main函数,但是我们需要添加:

    int argc = 1;
    char* argv[1] = { wxString((wxTheApp->argv)[0]).char_str() };
    glutInit(&argc, argv);


所以我加在MyApp::OnInit()中

bool MyApp::OnInit()
{
    int argc = 1;
    char* argv[1] = { wxString((wxTheApp->argv)[0]).char_str() };
    glutInit(&argc, argv);

    // Create the main frame window
    (void) MyFrame::Create(NULL);

    return true;
}

 

这样就可以调用glut的接口,画圆柱,圆球,茶壶等立体图了。

 


关于OpenGL, wxWidgets在Windows上的编译和使用

有些是书上或者网上的介绍,我简单的重复一下:

修改include\wx\msw\setup.h

#define wxUSE_GLCANVAS  0

改为:

#define wxUSE_GLCANVAS  1


如果其它PC机器没有安装wxWidgets,我们生成的exe,期望能够在那些机器上运行,运行库建议改为static,在build\msw\config.vc中

RUNTIME_LIBS = dynamic

改为:

RUNTIME_LIBS = static


USE_OPENGL =0

改为

USE_OPENGL =1


USE_OPENGL的修改,进行nmake -f makefile.vc时,不需要再添加。也就是说,USE_OPENGL =0,我们在编译时,运行:

nmake -f makefile.vc USE_OPENGL=1

编译成功后,在lib\vc_lib\检查wxmsw28d_gl.lib存在与否(这个路径与release或者debug相关,数字28与版本有关,我用的是2.8.12)。

到sample的目录下,编译希望看到的case就OK了。


另外加一点:

我第一次编译时没有包含opengl库,在build\msw运行:

nmake clean -f makefile.vc

nmake -f makefile.vc USE_OPENGL=1

但是还是不能支持OpenGL,于是

nmake clean -f makefile.vc

之后,lib\vc_lib库全部删除(lib\vc_lib\mswd\wx\setup.h,检查wxUSE_GLCANVAS的值仍为0-:) ),再编译,OK!


 

因为我设置为静态库(static)进行编译,在使用VS2005编译sample时,在工程属性中修改

"Configuration Properties" -> "C/C++" -> "Code Generation", Runtime Library 选择"Multi-threaded Debug(/MTd)"。默认是(/MDd)


你可能感兴趣的:(freeglut在wxWidgets下的安装和使用)