zoukankan      html  css  js  c++  java
  • OpenSceneGraph 3.6.4 源代码编译(x86) + chm 文档生成

    导读

      本文将介绍在 Windows 平台下,OpenSceneGraph 源码的编译、发布、以及 chm 文档生成。文章将使用 Visual Studio 2015 ,以 3.6.4 版本为例,编译生32 位 (x86) 版本 进行说明。

          最后一小节提供 3.6.4 版本编译的发布 (OpenSceneGraph-3.6.4-VC2015-x86 )、帮助文档(OpenSceneGraphReferenceDocs-3.6.4.chm)和 学习文档 的下载,以供参考。

          本文链接:https://www.cnblogs.com/BensonLaur/p/12697333.html


    目录
    1. 入门与准备
    2. 编译源码
    3. 发布与开发
    4. 文档生成
    5. 相关下载
    1、入门与准备

    OpenSceneGraph是一个开源的三维引擎,应用广泛,可通过相关网站进行进一步的了解

    官方网站(英文):http://www.openscenegraph.org/

    中文网站:http://www.osgchina.org/

    同时这里推荐 《OpenSceneGraph三维渲染引擎设计与实践》一书,个人认为比较适合新手入门,在本文最后 “相关下载” 章节,可以下载

    2、编译源码

    这里使用 Visual Studio 2015, 对 OpenSceneGraph 2.6.4 源码进行编译 32 位(x86)版本

    工具准备

    版本控制软件 git , 用于下载源代码

    git   (下载)

    安装(编译)工具 CMake ,用来构建具体平台的项目文件(这里用来构建 VS 的解决方案 Solution)

    cmake (下载)

    如果想要自己生成代码文档,则需要额外准备:

    文档自动生成工具 doxygen , 用于更具代码注释自动生成参考文档 

    doxygen   (下载)

    图像可视化软件 graphviz, 这里用来辅助构建文档中的图表 (这里下载 Stable 2.38 Windows install packages)

    graphviz (下载)

    下载并安装以上工具

    下载源代码进行编译
    (1)下载源代码

    参考 osg 中文网下载说明,使用 git 下载代码(3.6.4 版本)到本地,(个人建议单独创建一个父目录用来存放 osg 相关的代码和数据)

    git clone --branch OpenSceneGraph-3.6.4 https://github.com/openscenegraph/OpenSceneGraph.git

    这里下载到 D:osg 目录,如下:

    (2)下载第三方依赖

     OpenSceneGraph 本身没有包含读取 png、jpeg 的模块,为了编译的发布功能相对完善,这里先下载依赖的第三方模块

     当前(2020/04/14)中文网提供的依赖目前链接失效了,这里访问英文官网提供的第3方依赖: http://www.openscenegraph.org/index.php/download-section/dependencies

    这里下载其中 使用VS2015 编译的版本

    由于这里使用 VS2015 编译 x86 版本,这里下载 v140-x86 版本依赖,放置到 D:osg3rdParty  目录下

     

    (3)使用 cmake 构建 VS 项目

     打开安装 CMake 目录下的 cmake-gui.exe 

     将第(1)步下载的源代码中的 CMakeLists.txt 拖放到软件中,如下:

     构建代码的路径 最好选择另一个和 源代码不同的路径,这样构建的数据和源代码目录分离数据比较清晰不容易混乱。

    设置第3方库目录,比如这里使用的 : D:/osg/3rdparty

    如果需要想要构建使用例子(对新手有帮助,不过编译会多费些时间),可以勾选 BUILD_OSG_EXAMPLES

    如果需要自己构建文档,可以勾选 BUILD_DOCUMENTATION

    如果勾选 BUILD_DOCUMENTATION,那么需要如下图,勾选 “Advanced” , 确保 DOXYGEN_DOT_EXECUTABLE DOXYGEN_EXECUTABLE 指定到安装的 Graphviz 和 doxygen 对应的文件,如下图所示

     

     点击 “Configure” 再次确认一下配置,确认完毕后,点击 "Generate" 生成解决方案,成功生成后,点击 “Open Project” 可打开生成的 VS 方案

     最后,在项目中,分别在 DebugRelease 下构建 ALL_BUILD 项目即可:

    3、发布与开发
    发布

    编译完成后,如果要安装发布到之前 CMake 中指定的目录 C:/Program Files(x86)/OpenSceneGraph 

     可以构建 INSTALL 项目,将自动完成复制安装(DebugRelease 需要分别安装)

     

     执行成功后,安装目录下将出现对应的文件如下:

    复制安装成功后,为了后续开发,需要配置一些环境变量:

     

    设置 OSG_3RDPARTY_DIR 为刚才下载的第三方库的路径  D:osg3rdParty

    设置 OSG_NOTIFY_LEVEL 打印提醒等级为 WARN

    设置 OSG_VERSION 为当前使用的版本号 3.6.4 (方便如果升级版本的时候使用)

    设置 OSGDIR 为当前代码复制安装的目录 

    在 Path 中添加路径:%OSGDIR%in;%OSG_3RDPARTY_DIR%in;%OSGDIR%inosgPlugins-%OSG_VERSION%;

    验证

    为了方便快速验证是否安装成功,可以打开命令行,执行 osgversion.exe 

    如果想测试运行更多数据,可以下载使用官方提供的标志示例数据 http://www.osgchina.org/show-list.php?id=38

     

     并配置 配置 OpenSceneGraph 内部专用的环境变量 OSG_FILE_PATH  如下:

    OSG_FILE_PATH  是 osg 内部约定专用的变量,当指定打开文件不指定文件名时,osg自动搜索该目录

    设置完后,命令行可执行:

     或者:

    开发测试

     本地创建一个 VS 控制台应用程序项目

     在项目属性页中,设置 C/C++ -> General(通用)->Additional Include Directories (额外include 目录),添加 $(OSGDIR)include

      在项目属性页中,设置 C/C++ -> Linker (链接器) ->General->Additional Library Directories (额外库目录),添加 $(OSGDIR)lib

     在项目属性页中,设置 C/C++ -> Linker (链接器) ->input->Additional Dependencies 下,  添加需要导入的 lib 

     

     这里debugrelease 需要区分导入,debug 版本库名称有 d 后缀

    这里根据我生成的库文件,添加 debug 版本如下:

    OpenThreadsd.lib
    osgd.lib
    osgAnimationd.lib
    osgDBd.lib
    osgFXd.lib
    osgGAd.lib
    osgManipulatord.lib
    osgParticled.lib
    osgPresentationd.lib
    osgShadowd.lib
    osgSimd.lib
    osgTerraind.lib
    osgTextd.lib
    osgUId.lib
    osgUtild.lib
    osgViewerd.lib
    osgVolumed.lib
    osgWidgetd.lib

    这里根据我生成的库文件,添加 release 版本如下:

    OpenThreads.lib
    osg.lib
    osgAnimation.lib
    osgDB.lib
    osgFX.lib
    osgGA.lib
    osgManipulator.lib
    osgParticle.lib
    osgPresentation.lib
    osgShadow.lib
    osgSim.lib
    osgTerrain.lib
    osgText.lib
    osgUI.lib
    osgUtil.lib
    osgViewer.lib
    osgVolume.lib
    osgWidget.lib

    配置完毕后,添加代码如下:

    #include "stdafx.h"
    #include <osgDBReadFile>
    #include <osgViewerViewer>
    
    int main()
    {
        osgViewer::Viewer viewer;
        viewer.setSceneData(osgDB::readNodeFile("cow.osg"));
        return viewer.run();
    }
    #include "stdafx.h"
    #include <osgDBReadFile>
    #include <osgViewerViewer>
    
    int main()
    {
        osgViewer::Viewer viewer;
        viewer.setSceneData(osgDB::readNodeFile("cow.osg"));
        return viewer.run();
    }

    运行效果:

    4、文档生成

     如需生成文档,可以编译  doc_openscenegraph 

     默认情况下,编译生成的只是 html 文档,如果想要生成 chm 文档,还需要再 在 doxygen 配置文件 (doxyfile)中:

    #---------------------------------------------------------------------------
    # configuration options related to the HTML output
    #---------------------------------------------------------------------------
    GENERATE_HTML          = YES
    HTML_OUTPUT            = OpenSceneGraphReferenceDocs
    HTML_FILE_EXTENSION    = .html
    HTML_HEADER            =
    HTML_FOOTER            = "D:/osg/OpenSceneGraph-source-3.6.4/doc/Doxyfiles/custom_Footer.html"
    HTML_STYLESHEET        =
    HTML_DYNAMIC_SECTIONS  = NO
    GENERATE_DOCSET        = NO
    DOCSET_FEEDNAME        = "Doxygen generated docs"
    DOCSET_BUNDLE_ID       = org.doxygen.Project
    GENERATE_HTMLHELP      = YES
    CHM_FILE               = "../OpenSceneGraphReferenceDocs-3.6.4.chm"
    HHC_LOCATION           = "C:/Program Files (x86)/HTML Help Workshop/hhc.exe"
    GENERATE_CHI           = NO

    将红色部分 GENERATE_HTMLHELP 设置为 YES参考

     这样,在编译成功后,在编译目录下则会生成 chm 文档:

     

    5、相关下载

     这里已经编译好了  OpenSceneGraph-3.6.4-VC2015-x86 

     连同编译好的参考手册 OpenSceneGraphReferenceDocs-3.6.4.chm

     和 OpenSceneGraph 学习电子书 《OpenSceneGraph三维渲染引擎设计与实践》

     放置到了百度云盘

    百度云盘:https://pan.baidu.com/s/1SX8nu83IvnmKmj6pwI9vxg
    密码   :iplk

  • 相关阅读:
    php 图形用户界面GUI 开发
    centos实现两种秒级任务的简单方法
    rsync同步工具的配置与使用
    【转】网络字节序与主机字节序
    【转】Visual Studio 非常实用的调试技巧
    【原/转】【boost】智能指针使用规则以及介绍
    【转】一个非常常见但容易被忽略的c++问题——用IPML模式可以解决
    【转】Visual Studio项目相对路径的设置,实用
    【原】visual studio添加现有文件夹的方法
    【原】自定义UINavigationItem的两种方法以及相应的隐藏方法
  • 原文地址:https://www.cnblogs.com/BensonLaur/p/12697333.html
Copyright © 2011-2022 走看看