|
认识osgEdit还是在两年前的事情了,而且也加入了osgEdit的 Email列表,不过后来有段时间,其作者没有对他进行维护和升级,造成与Osg的发展断开,而且当时其作者只是为了学习设计模式和osg而开发的OsgEdit,因此内部很多模块的设计都有待商榷,当时对应的osg版本我记得是0.9,而且还提供了VS2003的工程文件。
后来osgEdit的作者有时间重新设计了它,不过它不再提供VS2003的工程文件,而是改用了Scons来编译工程,新版本的osgEdit对与想学习osg的新手的主要困难我认为主要以下两点:
1 osgEdit新版本使用大量的c++反射机制,造成本来对osg不太熟悉的新手看不懂原代码
2 osgEdit使用scons编译,而本身熟悉scons的人就很少,另外也不会如何安装scons和使用它
3 我认为这一点是最致命的,osgEdit网站的确提供了工程以及一些依赖库的下载连接: http://osgedit.sourceforge.net/download.html
不过真正下载的时候会发现不少库的下载链接已经不存在了,因为osgEdit的GUI是使用的GTK,而GTK以及相关的依赖库又有很多比如GTKMM GTKGLEXT之类,而对于这些库不熟悉的人又不知道如何去做,更郁闷的是 这些开源的库往往更新又很快,而osgEdit只是针对某些本版的库来完成的,所以可能在编译的时候往往需要对一些库的include 进行修改
现在的osgEdit版本支持osg2.2.0 目前叫rc1,不过下一版rc2马上就要出来 ,而且支持更高的osg版本,所以我建议大家如果感兴趣可以先现在当前版本,不需要编译通过,看看源代码就可以,里面一些工具类都写好了,另外它对与osg里面的几乎所有的从Reference类继承的类进行了封装,而且还有自己的一套场景图数据结构,是个很好地学习osg的教程。
osgEdit要编译 需要下载osgEdit GTK+合集(包括atk-1.0 cairo freetype2 glib-2.0 gtk-2.0 libart-2.0 libglade-2.0 libpng13 libxml2 pango-1.0 gtkglext-1.0(gtkglext-win32-1.2.0.exe)) GTKMM(gtkmm-win32-devel-2.10.5-1.exe) 还有 osg2.2.0,另外要编译osgEdit,需要下载scons (scons依赖python所以都要下载,我下载的是 scons-0.97.win32.exe 和 python-2.5.1.msi 我试过了版本搭配很重要,否则 就无法编译成功)
下载完这些binary 安装之后,需要设置环境变量,下面是我设置的例子,这里需要说明的一点,因为我现在用的是osg2.4版本,所以我在include和lib用的还是 osg2.4 只不过 dll是下载的osg2.2.0的dll(OSG2.2.0_vc80.exe) ,结果测试发现 没有影响osgEdit的生成:
GTK_BASEPATH D:\GTK
GTKGLEXT_BASEPATH D:\GtkGLExt\1.0
GTKMM_BASEPATH D:\Program Files\gtkmm
INCLUDE D:\GTK\INCLUDE;D:\GTK\INCLUDE\GTK-2.0;D:\GTK\INCLUDE\GLIB-2.0;D:\GTK\INCLUDE\PANGO-1.0;D:\GTK\INCLUDE\CAIRO;D:\GTK\INCLUDE\ATK-1.0;D:\GTK\INCLUDE\GTKGLEXT-1.0;D:\GTK\LIB\GTK-2.0\INCLUDE;D:\GTK\LIB\GLIB-2.0\INCLUDE;D:\GTK\LIB\GTKGLEXT-1.0\INCLUDE;D:\GTK\INCLUDE\LIBGLADE-2.0;D:\GTK\INCLUDE\LIBXML2;
LIB D:\GTK\LIB;
OSG_FILE_PATH D:\Program Files\OsgChina\OpenSceneGraph\data
OSG_ROOT D:\Program Files\OsgChina\OpenSceneGraph
Path D:\Program Files\OsgChina\OpenSceneGraph\bin;D:\GTK\bin;D:\Python25;D:\Program Files\gtkmm\bin;
这些都整完 ,就从命令行到osgEdit的目录下,输入scons命令,然后回车等着编译就行,一开始会有错误,是因为有些类型没有定义,我进行了如下的修改:
1 修改GTKMM安装目录下面的 D:\Program Files\gtkmm\include\cairomm-1.0\cairomm\enums.h 文件,在里面 最上头 加上
#include <cairo-deprecated.h>
#include <cairo_new.h>
2 在 D:\GTK\include\cairo 添加 cairo-deprecated.h 头文件,该头文件可以从其他高版本的GTK包里找到
3 在 D:\GTK\include\cairo 新加一个cairo_new.h文件,里面定义如下:
#pragma once
typedef enum _cairo_surface_type {
CAIRO_SURFACE_TYPE_IMAGE,
CAIRO_SURFACE_TYPE_PDF,
CAIRO_SURFACE_TYPE_PS,
CAIRO_SURFACE_TYPE_XLIB,
CAIRO_SURFACE_TYPE_XCB,
CAIRO_SURFACE_TYPE_GLITZ,
CAIRO_SURFACE_TYPE_QUARTZ,
CAIRO_SURFACE_TYPE_WIN32,
CAIRO_SURFACE_TYPE_BEOS,
CAIRO_SURFACE_TYPE_DIRECTFB,
CAIRO_SURFACE_TYPE_SVG,
CAIRO_SURFACE_TYPE_OS2,
CAIRO_SURFACE_TYPE_WIN32_PRINTING,
CAIRO_SURFACE_TYPE_QUARTZ_IMAGE
} cairo_surface_type_t;
typedef enum _cairo_pattern_type {
CAIRO_PATTERN_TYPE_SOLID,
CAIRO_PATTERN_TYPE_SURFACE,
CAIRO_PATTERN_TYPE_LINEAR,
CAIRO_PATTERN_TYPE_RADIAL
} cairo_pattern_type_t;
typedef enum _cairo_font_type {
CAIRO_FONT_TYPE_TOY,
CAIRO_FONT_TYPE_FT,
CAIRO_FONT_TYPE_WIN32,
CAIRO_FONT_TYPE_QUARTZ
} cairo_font_type_t;
做完上面3步 基本上就没有编译错误了,生成的 exe在 release包里,不过 这时候直接运行会出错,原因 是 dll和 资源没有配好,dll好弄,可以直接吧需要的dll都考过来,不过资源比较麻烦,需要在release 下面新建一个data文件夹 ,然后 讲工程中的osgEdit.ui 考进去,另外把icon文件夹考进去, 最后还要 在release文件夹下新建一个 extensions文件夹 里面分别放 3个子文件夹资源,具体的资源可以下载一个osgEdit安装版,然后把资源拷过来
象上面说的,我打算在新版本rc2出来后,再发布具体的编译过程,这里仅仅简单介绍一下,另外发上osgEdit的截图。 |
-
osgEdit截图
评分
-
1
查看全部评分
-
|