查看: 6272|回复: 7

WindowXP下osgWX osgGTK osgQT osgCEGUI编译小节

[复制链接]

该用户从未签到

发表于 2008-5-20 03:13:13 | 显示全部楼层 |阅读模式
这里osg我用的是2.4 但是 osgWX  osgGTK  osgQT osgCEGUI四个例子程序都是用的2.5里面的,我都是新建的VS2005下面的工程,只有osgWX不是Console的工程,而是_Windows的工程,然后我把源码拷贝到工程下,有些个别的需要修改一下。这里就不介绍osg的编译,下载和安装了。
1)osgWX 即osg+ WxWidget
WxWidget的下载和安装:
(1)        wxWidgets是一个开源的跨平台GUI库,其程序可以在Windows,Linux, Mac OS等各种平台上运行,甚至是Windows CE ,Palm OS. 最新版本2.6.2. 不但包括GUI, 还有Media, Socket, ODBC等库.详情请见: http://www.wxwidgets.org/
我下的是 最新版 wxWidgets-2.8.7.tar.gz  
(2)        将源码解压到D盘 根目录 D:\wxWidgets-2.8.7,之后 到 D:\wxWidgets-2.8.7\build\msw,用VC6(这里很郁闷,只提供了VC6的工程,没有VS2005或者更高版本的工程文件,不过无所谓,我们只需要 .lib .h 和.dll )打开工程文件wx.dsw 然后 在 Build下面的Batch Build 里面 选择需要编译的工程类型,我建议只编译各个工程的 Debug和Release版本 其他不用编译,另外需要特别注意的一点就是(我一开始就没注意,结果又重新编译了一遍),在 gl 这个工程下面 打开File View,里面有 很多文件夹 ,其中有个 Setup Header文件夹,下面一共2个setup.h文件,需要 修改最上面那个的一个地方:
将 #define wxUSE_GLCANVAS       0
改成 #define wxUSE_GLCANVAS       1
这样就可以编译了(如果不这样 你编译完这个工程没有问题 但是你在编译下面的例子的程序就会出问题),需要等一段时间,编译完成后 就在 D:\wxWidgets-2.8.7\lib 目录下面生成 两个 文件夹 vc_lib 和 vc_dll 里面放了 生成的lib 和 dll文件
然后你可以到 D:\wxWidgets-2.8.7\samples 下面 找到 samples.dsw 工程文件 打开 然后 通过 batch build进行编译,当然也要选择 不然很多文件很浪费时间。
(3)        WxWidget编译好了,下面需要我们建立一个 VS2005的win32 ConSole工程,名字叫osgWxwidget,建好后需要修改下面几个地方:
配置属性->常规->字符集-> 设置成 使用多字节字符集
配置属性->c/c++ ->预处理器->预处理器定义中 : WIN32;_DEBUG;__WXMSW__;__WXDEBUG__;_WINDOWS;NOPCH
配置属性->链接器->输入->附加依赖项中:
kernel32.lib user32.lib gdi32.lib comdlg32.lib winspool.lib winmm.lib shell32.lib comctl32.lib rpcrt4.lib ole32.lib oleaut32.lib uuid.lib wsock32.lib odbc32.lib OpenThreadsd.lib osgd.lib osgDBd.lib osgUtild.lib osgGAd.lib osgViewerd.lib osgTextd.lib glu32.lib opengl32.lib osgSimd.lib osgParticled.lib wxmsw28d_core.lib wxbase28d.lib wxmsw28d_adv.lib wxtiffd.lib wxjpegd.lib wxpngd.lib wxzlibd.lib wxregexd.lib wxexpatd.lib

其中上面的 comctl32.lib rpcrt4.lib 两个库必须有 否则 osgWX肯定编译不通过

配置属性->链接器->系统->子系统 中改成 Windows (/SUBSYSTEM:WINDOWS)

(4)        下面就吧osg2.5里面的
osgviewerWX.h  osgviewerWX.cpp 考到并且添加到工程里面 ,在osgviewerWX.cpp最顶上加上 #include "stdafx.h"
删除 osgWxWidget.cpp 文件里面的内容 只剩下  #include "stdafx.h"(其实吧文件删除了最好)
        修改环境变量,在Path里面加上 D:\wxWidgets-2.8.7\lib\vc_dll
        在VS2005的 工具->选项->项目与解决方案->vc++目录 里面:
        包含文件 最下面加上 :
D:\wxWidgets-2.8.7\include
        D:\wxWidgets-2.8.7\include\msvc
        D:\wxWidgets-2.8.7\include\wx
好了 都弄完了 可以编译了。有一点美中不足的是 osgWX的例子程序有一点点内存泄露,只是那么一点点 ,仔细看就会发现 在 osgviewerWX.cpp 文件里面的 bool wxOsgApp::OnInit() 函数里面 有一个 c++的 数组     int *attributes = new int[6]; 没有释放,只要在 这个函数之后         delete attributes;
        attributes = NULL;  就 ok了
     另外 程序是必须用命令行输入参数才运行,我改了一下 函数 bool wxOsgApp::OnInit(),如下:
    //wxString fname(argv[1]);
        osg::ref_ptr<osg::Node> loadedModel = osgDB::readNodeFile("truck.ive");
    if (!loadedModel)
    {
        std::cout << argv[0] <<": No data loaded." << std::endl;
        return false;
    }
程序运行的效果图在下面。

2)osgGTK
这个例子是调试起来最麻烦的,因为需要装GTK以及相关依赖,而且还要考虑版本问题,
千万不要去 http://www.gtk.org/download-windows.html 下那个bundle ,说是完整版,其实少了很多,而且里面也没有gtkglext ,需要找一个 GTK的完整版,我具体记不清楚在哪儿找的了,我这里有个,不知道如何上传到论坛上,里面很全,装好后在include里面有 :
atk-1.0 cairo fontconfig freetype2 glib-2.0 gtk-2.0 gtkglext-1.0 libart-2.0 libglade-2.0 libpng13 libxml2 pango-1.0
其实 你也可以 http://www.gtk.org/download-windows.html 上面下下来各种包 自己去配,这里我就不具体说了。

装好GTK ,我们还需要装一个 GTKMM 这个 可以在这儿下
http://ftp.gnome.org/pub/gnome/binaries/win32/gtkmm/2.10/
我下的是最新的 gtkmm-win32-devel-2.10.5-1.exe 然后安装好

GTK和GTKMM都装好了 下面需要设置环境变量:
GTKMM_BASEPATH  D:\Program Files\gtkmm
Path                 D:\GTK\bin; D:\Program Files\gtkmm\bin

下面新建一个VS2005的 win32 Console工程,名为 OsgGTK
打开工程,将 osg2.5里面osgGTK例子中的 osggtkdrawingarea.h
osggtkdrawingarea.cpp osgviewerGTK.cpp拷贝到 工程里面,把原来工程里的 .cpp文件删了 ,然后适当加上 #include "stdafx.h" 就ok了
下面配置工程设置和工程目录:
配置属性->常规->字符集-> 设置成 使用多字节字符集
配置属性->链接器->输入->附加依赖库:
OpenThreadsd.lib osgd.lib osgDBd.lib osgUtild.lib osgGAd.lib osgViewerd.lib osgTextd.lib glu32.lib opengl32.lib glib-2.0.lib gtk-win32-2.0.lib gdk-win32-2.0.lib gobject-2.0.lib gdk_pixbuf-2.0.lib gthread-2.0.lib gmodule-2.0.lib pango-1.0.lib intl.lib gtkglext-win32-1.0.lib gdkglext-win32-1.0.lib
在VS2005的 工具->选项->项目与解决方案->vc++目录 里面:
包含文件 最下面加上 :
D:\GTK
D:\GTK\include\gtk-2.0
D:\GTK\include\cairo
D:\GTK\include\glib-2.0
D:\GTK\lib\glib-2.0\include
D:\GTK\include\pango-1.0
D:\GTK\lib\gtk-2.0\include
D:\GTK\include\atk-1.0
D:\GTK\include\gtkglext-1.0
D:\GTK\lib\gtkglext-1.0\include
库文件 最下面加上:
D:\GTK\lib

好了下面编译工程文件,运行后的结果在下面。
3)osgQT
QT的安装与配置:
源文件的安装:
从网站http://trolltech.com/developer/downloads/qt/windows  下载最新的4.4.0版本的源文件压缩包:qt-win-opensource-src-4.4.
解压qt-win-opensource-src-4.4.0到H盘 H:\QT\qt-win-opensource-src-4.4.0
我的电脑->属性->高级->环境变量->系统变量
新建 名: QMAKESPEC 值: win32-msvc2005
   名: QTPATH    值: H:\qt-win-opensource-src-4.4.0
找到PATH变量->在它的值后面加 ;%QTPATH%\bin\;
.打开vs2005命令提示符
转到QT目录
configure->Y->(等待)->nmake->(等待)->完成
这里值得说的是:QT目录占用了很大的空间


Windows下基于mingw的QT的安装文件的安装:
到网站上http://trolltech.com/developer/downloads/qt/windows 下载最新的4.4.0安装文件
直接执行安装文件,在过程中会让用户选择是使用已经装好的Mingw还是从网站下载mingw安装文件,这里可以事先直接从mingw的网站下载也可以选择当前下载并安装,但是需要注意的一点是,QT4.4.0只支持mingw3.2或者之上的版本,否则不能安装成功,如果你安装了 mingw ,可以到 D:\MinGW\include 下面找到一个 w32api.h 文件,里面有它的版本号 如果是3.2 就行

下载并且安装完QT,设置环境变量:
Path 添加D:\QT\4.4.0\bin
建立一个VS2005的 win32 console工程,将osg2.5下面的osgQT中的 AdapterWidget.cpp osgviewerQT.cpp QOSGWidget.cpp 删除工程里面原来的.cpp文件,然后适当加上  :#include "stdafx.h"下面对它进行设置:
配置属性->常规->字符集-> 设置成 使用多字节字符集
配置属性->c/c++ ->预处理器->预处理器定义中 : WIN32;_DEBUG;_CONSOLE;USE_QT4
配置属性->链接器->输入->附加依赖库:
QtOpenGLd4.lib QtCored4.lib QtGuid4.lib OpenThreadsd.lib osgd.lib osgDBd.lib osgUtild.lib osgGAd.lib osgViewerd.lib osgTextd.lib glu32.lib opengl32.lib osgSimd.lib osgParticled.lib
在VS2005的 工具->选项->项目与解决方案->vc++目录 里面:
包含文件 最下面加上 :
D:\QT\4.4.0\include
库文件最下面加上:
D:\QT\4.4.0\lib

好了 可以编译运行了 不过 QT的例子也是基于命令行的程序,不同的参数有不同的视图类型,不过可以通过修改一下源代码来看程序的运行效果。最下面显示了分别基于viewerQT和CompositeViewerQT的例子运行结果。
4) osgCEGUI
CEGUI-SDK-0.5.0b-vc8:
直接下载windows下的可安装文件,然后安装
然后建立 VS2005的 win32 console工程,名叫osgCEGUI 然后将 osg2.5下面的 osgCEGUI拷过来,然后设置工程:
环境变量:
Path     D:\Program Files\CEGUI-SDK-0.5.0b-vc8\bin

配置属性->常规->字符集-> 设置成 使用多字节字符集
配置属性->链接器->输入->附加依赖库:
OpenThreadsd.lib osgd.lib osgDBd.lib osgUtild.lib osgGAd.lib osgViewerd.lib osgTextd.lib glu32.lib opengl32.lib CEGUIBase_d.lib OpenGLGUIRenderer_d.lib

在VS2005的 工具->选项->项目与解决方案->vc++目录 里面:
包含文件 最下面加上 :
D:\Program Files\CEGUI-SDK-0.5.0b-vc8\include
D:\Program Files\CEGUI-SDK-0.5.0b-vc8
库文件最下面加上:
D:\Program Files\CEGUI-SDK-0.5.0b-vc8\lib

osgWxdget

osgWxdget

osgGTK

osgGTK

osgQTViewer

osgQTViewer

osgQTCompositeViewer

osgQTCompositeViewer

评分

1

查看全部评分

该用户从未签到

发表于 2008-5-20 09:54:22 | 显示全部楼层


学习 :) :) ~~~~~~~~


CEGUI0.60相对于0.50的版本,在与OSG结合以及可视化方面的效果更好了~~~~~~~~~~~

该用户从未签到

发表于 2008-5-20 18:09:39 | 显示全部楼层
支持一下

该用户从未签到

发表于 2008-5-20 18:47:04 | 显示全部楼层
相当的有用,相当的好

该用户从未签到

发表于 2011-2-27 16:15:55 | 显示全部楼层
非常有用啊,正在编译

该用户从未签到

发表于 2011-2-28 13:03:43 | 显示全部楼层
这个绝对使用的好东西啊,加精

该用户从未签到

发表于 2011-3-17 08:47:12 | 显示全部楼层
Mark,好东西啊
您需要登录后才可以回帖 登录 | 注册

本版积分规则

OSG中国官方论坛-有您OSG在中国才更好

网站简介:osgChina是国内首个三维相关技术开源社区,旨在为国内更多的技术开发人员提供最前沿的技术资讯,为更多的三维从业者提供一个学习、交流的技术平台。

联系我们

  • 工作时间:09:00--18:00
  • 反馈邮箱:1315785073@qq.com
快速回复 返回顶部 返回列表