要做osg了,花了一天多的时间才把环境搭建起来,在这里记录一下,也希望可以帮助更多的人。
第一步,下载所需要的安装包
OpenScenceGraph,cmake,3rdparty,OpenSceneGraph-Data.
这4个东西几乎是必备的(OpenSceneGraph-Data是用来演示的例子,测试开发环境是否搭建好),
但是只有OpenScenceGraph,OpenSceneGraph-Data在网上容易找到,cmake和3rdparty在网上都不容易找到。
如果找不到,可以发送信息到[email protected]这个邮箱,我可以发送给大家。
下载后的文件位置如下图:cmake和3rdparty都在在3rpart_cmake文件夹里面
第二步,启动cmake
并在where is the source code:选项栏中指定OpenScenceGraph的路径,在where to build the binaries:选项栏中指定编译后输出的路径,为了方便识别,我将它们放在同一级目录中。然后点击configure.
然后选择编译器,因为本机是vs2008而且vs是32位的,所以选择的是visual studio 9 2008,不同的环境选择的不一样,如果选择错误,可能会出现类似the project file is invalid的错误提示,如果这样,可以换成其他的编译器试试看
点击finish选择完编译器后点击configure,开始配置,如下图所示:
接下来会出现如下界面,提示configuring done!,但是要注意上面的界面为红色,这是因为还有地方要修改,还没有配置完成。
主要要修改的地方是选项:ACTUAL_3RDPARTY_DIR的值,这个属性从字面意思就可以知道应该选3rdpart的路径,3rdpart就是最开始需要下载的安装包,然后BUILD_OSG_EXAMPLES这个选项最好也勾上。其他的就不用管了,如下图:
这两个地方修改后再次点击configure按钮,上面任然会出现红色,这是因为还有一个地方要修改,就是BUILD_MFC_EXAMPLE这个选项也要勾上,如下图,然后再点击configure.
这是configure后上面的颜色终于不是红色的了,表示可以继续下一步操作了,如下图:
最后配置成功,如下图:
第二步的工作就完成了
第三步:打开之前where to build the binaries中设置的目录找到其中的ALL_BUILD.vcproj,使用vs2008打开。
然后在vs2008的菜单栏中选择“生成”->“批生成”,并勾上如下两项,然后选择生成,如下图
接下来就是漫长的编译时间了,因为需要编译的工程比较多,这个过程会持续很久,在我的机器上运行了3个多小时才完成。如下图:
并且在编译的过程中出现了这两个错误,我没理他,最后好像也没多大的影响,但是感觉影响肯定是有的,以后出现了问题再把那些工程重新编译下吧,现在重要的是把环境搭起来,能运行简单的例子。
这两个错误也记录下来了:
LINK : fatal error LNK1000: Internal error during IncrBuildImage
warning C4819: 该文件包含不能在当前代码页(936)中表示的字符。请将该文件保存为 Unicode 格式以防止数据丢失
编译后的工程VSProject1中含有如下内容,如图:
此时最重要的3个文件夹lib,bin,include中bin和lib里的文件应该没问题,但是include文件中可能没东西,这个的处理办法也很简单,就是将OpenScenceGraph源码包中的inculde文件夹copy过来并覆盖VSProject1中的include文件夹
这里面有用的就3个文件夹,一个是lib,一个是bin,还有一个是include,为了方便使用,把他们单独拿出来,放在如下位置:
第三步的工作也做完了,如果走到这一步,表示环境搭建起来没多大问题了。
第四步:设置环境变量
需要设置两个环境变量
在环境变量中添加OSG_FILE_PATH这个变量,然后将它的值设为OpenSceneGraph-Data的路径,我设置:OSG_FILE_PATH:D:\OpenScenceGraph\OpenSceneGraph-Data-3.0.0\OpenSceneGraph-Data-3.0.0;
在环境变量path中添加一个值,就是编译后生成的bin路径,上面的截图中也有,为:
D:\OpenScenceGraph\OpenScenceGraph\bin
环境变量设置好了以后可以测试一下了
打开cmd,输入osgversion,会出现使用osg的版本,
但是也有可能出现提示缺少zlib1.dll的提示,安装一下就可以了,正常情况下会出现如下图所示的情况:
输入osgviewer glider.osg会显示OpenSceneGraph-Data源码包中的例子,如下图:
打开vs2008,新建一个C++工程,选择控制台程序,然后选择生成一个空项目
再在菜单栏中依次选择“工具”->“项目和解决方案”->“VC++目录”如下图:
点击右上角的“显示一下内容的目录”下面的下拉菜单
在“可执行文件”中添加bin文件夹得路径:D:\OpenScenceGraph\OpenScenceGraph\bin
在“引用文件”中添加include文件夹的路径:D:\OpenScenceGraph\OpenScenceGraph\include
在“库文件”中添加lib文件夹得路径:D:\OpenScenceGraph\OpenScenceGraph\lib
这三个路径上面在第三步结束时的截图中也有。
接下来编写一个例子
在项目的“源文件”中新建一个项,选择“c++”文件,里面添加如下代码:
#ifdef _DEBUG
#pragma comment(lib,"osgd.lib")
#pragma comment(lib,"osgDBd.lib")
#pragma comment(lib,"osgViewerd.lib")
#pragma comment(lib,"OpenThreadsd.lib")
#else
#pragma comment(lib,"osg.lib")
#pragma comment(lib,"osgDB.lib")
#pragma comment(lib,"osgViewer.lib")
#pragma comment(lib,"OpenThreads.lib")
#endif
#include <osgViewer/Viewer>
#include <osgDB/ReadFile>
int main(){
osgViewer::Viewer viewer;
osg::Node * node=new osg::Node;
node=osgDB::readNodeFile("glider.osg");
viewer.setSceneData(node);
return viewer.run();
}
运行结果如下图: