1.软件获取
2.编译准备
- 先将CMake安装后,将剩余3个文件解压后,并将源代码改名为OSG-Source-3.4.0,数据改名为OSG-Data-3.4.0。而第三方库,需要先将其中的X86文件夹剪切出来,和三个解压文件在同一级目录中,删除原来的3rdParty文件夹,并将X86文件夹改名为3rdParty。此时三个文件夹的目录地址分别为:
D:\OSG\OSG-Source-3.4.0
D:\OSG\OSG-Data-3.4.0
D:\OSG\3rdParty
- 将D:\OSG\3rdParty\include\modules内文件全部复制到D:\OSG\3rdParty\include\libxml文件夹内。
- 在D:\OSG\OSG-Source-3.4.0文件夹内建立两个子文件夹build和bin,用于存放CMake生成的工程文件和VS编译后所要INSTALL的库文件等。
3.Cmake编译
按照下图填入源代码位置和CMake所生成的工程的存放位置
将D:\OSG\OSG-Source-3.4.0内的文件CMakeLists.txt拖入CMake,并修改build目录为下图所示:

点击Configure,选择编译器,这里使用的是默认的2010,确定后等待第一轮配置完成。
第一轮Configure完成后需要进行以下手动修改:
ACTUAL_3RDPARTY_DIR -> D:/OSG/3rdParty
BUILD_OSG_EXAMPLES -> ON
CMAKE_INSTALL_PREFIX -> D:/OSG/OSG-Source-3.4.0/bin (即后面INSTALL的输出目录)
该教程与其他不同的地方在于,这里还配置了其他内容,目的就是为了防止出现不能加载tff格式字体和jpg、png格式图片等需要用到第三方插件的功能。先将软件上的Grouped功能勾选上,并修改如下(2处):
(第一处)手动找到FREETYPE_LIBRARY_DEBUG为D:\OSG\3rdParty\lib\freetype2311MT_D.lib
(第二处)手动找到LIBXML2_INCLUDE_DIR为D:\OSG\3rdParty\include\libxml
再次点击Configure,等待第二轮配置完成。
第二轮配置完成后,会看到CMake自动根据我们配置的LIBXML2_INCLUDE_DIR地址补全了Grouped中的LIBXML2,如下图所示:
而后,找到BUILD_MFC_ EXAMPLE选项,选中打钩。
- 最后一次点击Configure,等待第三轮配置完成。完成后,就可以点击Generate选项了,Generate完成之后,所有输出信息如下图所示:

4.VS编译
- Step1:
在D:\OSG\OSG-Source-3.4.0\build 目录下找到CMake生成的解决方案 OpenSceneGraph.sln,后双击打开。
- Step2:找到批生成

- Step3:编译程序的Debug版本和Release版本(ALL_BUILD版,作者耗时4:30)
完成后编译输出信息如下图所示:

- Step4:编译程序的Debug版本和Release版本(INSTALL版,作者耗时15min),并取消ALL_BUILD的选中状态

5.环境变量设定
这里详细说明一下第四步,一般Path变量本身就有的,不需要新建,使用时直接在后面加分号后紧跟新增的Path,这里设置的是D:\OSG\OSG-Source-3.4.0\bin\bin,即“INSTALL”时的导出位置。而像环境变量OSG_FILE_PATH这种属于某个软件专有的变量,就需自己新建一个,新建后,指定路径为D:\OSG\OSG-Data-3.4.0,即解压缩的数据文件所在位置。
6.测试1
使用组合键“WIN+R”,输入“cmd”,进入DOS窗口,使用命令“ osgviewer cow.osg ”,若安装无误,则会正常显示出一条金牛(如下图所示):

7.测试2
先建立一个win32的控制台项目,然后按照正常流程这里需要进行属性配置,包括“包含目录”、“库目录”和“附加依赖项”,但每一次创建一个工程项目都需要这样添加,是不是有点太过麻烦,这里介绍一种建立属性表的方法用于解决,方法如下:
- Step1
若是在VS软件中没能找到属性管理器窗口就先按照上图中的方法调出该窗口,紧接着分别在Debug目录和Release目录下创建两个属性表文件,并分别命名为如图名字(可自由定义,但要容易区分)

Step2
先双击打开属性表文件OSG_340_VS10_Win32_Debug,进行如下配置:
在包含目录中填入地址:D:\OSG\OSG-Source-3.4.0\bin\include
在库目录中填入地址:D:\OSG\OSG-Source-3.4.0\bin\lib
在第三步指向的输入处,找到附加依赖项,在其中填入以下内容(具体要以D:\OSG\OSG-Source-3.4.0\bin\lib目录下的实际库文件为准,注意这些库文件都带了字母“d”,表示Debug版本):
OpenThreadsd.lib
osgd.lib
osgAnimationd.lib
osgDBd.lib
osgFXd.lib
osgGAd.lib
osgManipulatord.lib
osgParticled.lib
osgPresentationd.lib
osgQtd.lib
osgShadowd.lib
osgSimd.lib
osgTerraind.lib
osgTextd.lib
osgUId.lib
osgUtild.lib
osgViewerd.lib
osgVolumed.lib
osgWidgetd.lib
属性表文件OSG_340_VS10_Win32_Release的配置与Debug版本只有附加依赖项上有些许不同,不同之处就是所有的lib文件不带字母“d”,列出如下:
OpenThreads.lib
osg.lib
osgAnimation.lib
osgDB.lib
osgFX.lib
osgGA.lib
osgManipulator.lib
osgParticle.lib
osgPresentation.lib
osgQt.lib
osgShadow.lib
osgSim.lib
osgTerrain.lib
osgText.lib
osgUI.lib
osgUtil.lib
osgViewer.lib
osgVolume.lib
osgWidget.lib
最后一定不要忘记分别保存!!!
- Step3
建立源文件,使用以下代码进行测试:
#include <osgViewer/Viewer>
#include <osgDB/ReadFile>
int main()
{
osg::ref_ptr<osgViewer::Viewer> viewer = new osgViewer::Viewer;
viewer->setSceneData(osgDB::readNodeFile("cow.osg"));
return viewer->run();
}
运行结果出现一条金牛,则表示成功。
8.测试3
|