OSG编译

2018-05-07

   相较于《OpenSceneGraph三维渲染引擎编程指南》中用到的2.8版本,当前3.6版本的OSG编译过程还是非常简单的。我们只需要注意几个选项即可。
   在search 框内输入“deprecated”,会有两个选项被搜索到。需改为不勾选状态,我们不再需要老版本接口方式了。
   OSG_GL_CONTEXT_VERSION可填写3.3,这将会变成一个宏:#define OSG_GL_CONTEXT_VERSION "3.3",在osg/GL文件中。暂时还没有发现这个宏对于OSG的影响是什么。
   需要下载第三方lib预编译版本。此文档中有各种版本的下载选项。解压之后文件夹名字为3rdparty,放在OSG、build_OSG同级目录即可。cmake能自行找到。亦可自己指定目录。
   generate之后,需要把build_OSG/include目录文件都copy到 OSG/include 目录,然后就可以开始编译OSG了。
   OSG依赖的lib有 libcurl,libpng,zlib,jpeg,freetype,libtiff,glut,gif。都是用于支持显示相关功能的,有静态链接也有动态链接的(glut, curl,png,zlib)。如果自己的项目中也有使用到这些lib,那么需要注意版本问题。若所需版本高于osg 中这些lib的版本,那么只能尝试自己来编译特殊的OSG版本了。
   至于OSG group中 GL1、GL2、固定定点、显示列表等选项,我尝试过不勾选,但是最后编译出错。可能是作者还没有把老式的OpenGL接口完全去除掉。
   OSG目前还是在开发中,从log来看,似乎这半年来作者Robert Osfield commit 的频率高了不少。因为OSG本身只支持OpenGL,若能够完全剔除老版本的OpenGL接口就好了。
   最好使用最新版本的cmake.
   

20180517
昨天尝试编译OSG 3.6 vs2013版本,始终无法build成功,今天看到一年前的帖子说到同样的问题,猜到作者可能根本就没有用vs2013测试过。报错 'unistd.h' No such file or directory. 解决方法也非常简单,在zconf.h 文件报错的那一行,我的第三方lib是vs2013 x64 small,在454行,把#include <unistd.h> 注释掉即可。

 

如果有任何意见,欢迎留言讨论。


[ 主页 ]
COMMENTS
POST A COMMENT

(optional)



(optional)