Windows上源码编译OSG-C++开源图形库及其依赖库

前言

OSG这个库着实可惜了,基金会主体莫名其妙没了,导致整个后续版本迭代难以为继,最后几年就剩一个Robert在继续更新维护了

最后几年前Robert转投VulkanSceneGraph了,也就是VKSG,OSG迭代到3.6.5版本就停止了,资料也残缺不全也非常古老

题外话,国内不是有个中文社区,还有个公司在维护吗,就十多年前出个教程没下文了,现在成了一个纯纯商业公司,贡献一行代码了没,嗐,可惜了OSG

认识OSG三方库

资料太少了,即使有也是很老很老的了,本小节只能通过总结CMake来观察到底依赖哪些库,所以不一定齐全,但只要写明的就应该不会有错,毕竟直接从CMakeLists和CMake-Configure打印总结出来的

osg源码下载地址OSG-3.6.5

测试数据osg-data下载地址:OSG-Data-3.4.0,可以不用下载,因为只用于测试学习用途

  1. 必需的三方库(REQUIRED packages)

    从表现来说,它不需要任何必须的依赖库,直接CMake Configure-Generate就可以开始构建工程

    虽然OpenGL、Threads被标注成了可选扩展库,但是OSG本质是对OpenGL的封装调用,因此这个几乎可以说是必须的,而且一般PC电脑一定会自带这个的

    序号名称
    1OpenGL
    2Threads
  2. 可选的三方库(OPTIONAL packages)

    OSG可选三方库基本就是赋予OSG-Plugin能力,能够更多的去读取不同的数据
    以下标注的是否常用,仅代表我个人是否经常使用,完全不代表

    序号名称是否常用说明下载地址
    1EGL×Electronic Graphics Library处理图像和图形渲染,如果不用OpenGL ES就不用管这个库
    2Freetype字体引擎,访问多种字体格式文件Freetype-2.13.2
    3ilmbase×OpenEXR影像格式的一部分
    4Inventor×Autodesk Inventor 三维机械设计文件读写
    5Jasper×支持多种图像格式的编码和解码
    6OpenEXR×用于电影制作中高动态范围(HDR)图像的文件格式
    7OpenCascade×CAD/CAM/CAE内核
    8LibXml2读写xmllibxml2-2.12.6
    9COLLADA×读写COLLADA格式模型,如dae文件类型
    10FBX读写fbx ,非开源,要去AutoDesk官网下载安装fbx-sdk-2020.03.07-vs2022
    11GDAL用于栅格和矢量地理空间数据格式的转换和处理gdal-3.8.5
    12GTA×未知
    13CURL支持多种通信协议,用于数据传输curl-8.7.1
    14LibVNCServer×VNC协议的服务器库,允许远程桌面访问
    15DCMTK×用于处理医学图像的DICOM标准
    16FFmpeg×音视频处理库,录制、转换和流式传输音视频
    17GStreamer×流媒体处理框架,用于构建流媒体应用程序
    18GLIB×GNOME项目的基础库,提供数据类型、线程、网络等功能的C语言库
    19DirectShow×Windows平台上的流媒体处理架构
    20SDL&SDL2×和SDL同为跨平台的开发库,用于提供对音频、键盘、鼠标、游戏手柄和图形硬件的低级访问
    21Fontconfig×用于配置和定制字体访问的库
    22Poppler-glib×基于glib的Poppler库封装,用于渲染PDF文档
    23RSVG×读写SVG文件
    24GtkGl×在GTK+应用程序中集成OpenGL
    25DirectInput×Windows的API,用于处理游戏控制器和其他输入设备的输入
    26NVTT×NVIDIA Texture Tools,用于压缩和解压缩纹理的库
    27ZeroConf×零配置网络,用于自动发现网络上的服务和设备
    28LIBLAS×点云数据处理,读写LAS(LiDAR数据格式)文件,但它已经被PDAL库所取代
    29GIFLIB×读写GIF图像
    30JPEG读写JPEG图像libjpeg-3.0.1
    31ZLIB数据压缩zlib-1.3.1
    32PNG读写PNG图像libpng-1.6.32
    33TIFF读写TIFF图像libtiff-4.6.0
    34QuickTime×Apple的多媒体框架,已被AVFoundation取代

编译

本次编译打开上文描述的一些常用库依赖,以提供给OSG更多的能力

CMake一定要注意修改CMAKE_INSTALL_PREFIX的安装路径,不然这么多库整理起来很麻烦
Visual Studio批生成遇到Set Local…错误无法install的时候,将VS作为管理员启动再打开工程就可以解决,但根本问题可能是没有正确指定CMAKE_INSTALL_PREFIX或者库指定的INSTALL属性,输出到C盘、文件名冲突、错误文件地址等等各种情况导致创建文件夹失败,所导致的SetLocal问题

编译GDAL、LibXml2、CURL、JPEG、PNG、ZLib、PNG、Tiff

参考我的另一篇GDAL编译指南,里面有完整的这些编译步骤

其实在编译GDAL的时候这些都需要编译,这边直接用即可

编译FreeType

CMake直接编译后ALL_BUILD和INSTALL,没有什么特殊的,记得改CMAKE_INSTALL_PREFIX;

安装FBX(不开源,但是提供了二次开发包)

  1. 下载并安装,注意安装路径,可以自己改
  2. 重新组织一下文件夹,创建bin,lib(先把原来的lib改个名字)
  3. 把原来的./lib/x64/release/libfbxsdk.dll拷贝到bin文件夹里面
  4. 把原来的./lib/x64/release/*lib12个文件拷贝到新的lib文件夹内

至于里面看到的zlib、libxml2库是静态编译的进libfbxsdk的,不用管

编译OSG

官方推荐做法是把上面所有三方依赖库放在一个文件夹里面,然后指定ACTUAL_3RDPARPTY_DIR属性为改文件夹位置,它可以自己先去尝试找到所有库

但是由于个人习惯以及实际编译结论来说,ACTUAL_3RDPARPTY_DIR自动搜寻,也没有办法完全的把所有希望的值都填上,还得挨个检查一遍,那不如我自行挨个添加得了

  1. 配置GDAL
    在这里插入图片描述

  2. 配置LibXml2(记住include,要填写两层)
    在这里插入图片描述

  3. 配置CURL
    在这里插入图片描述

  4. 配置JPEG
    在这里插入图片描述

  5. 配置ZLib
    在这里插入图片描述

  6. 配置Tiff
    在这里插入图片描述

  7. 配置FreeType
    在这里插入图片描述

  8. 配置FBX(Debug一定也要填上,不然不识别,虽然也不准备编译Debug版本,不嫌麻烦可以把上面说的./lib/x64/debug下面的库也拷贝过去)
    在这里插入图片描述

  9. 配置PNG
    在这里插入图片描述

  10. 配置

    1. 打开勾选WIN32_USE_MP
    2. 打开勾选OSG_USE_UTF8_FILENAME
    3. 修改CMAKE_INSTALL_PREFIX为自定义的安装路径
  11. Configure&&Generate,校对一下是不是预期的都打开了
    在这里插入图片描述

准备开发包

拷贝fbx依赖库的时候要格外注意,他自己有libxml2的依赖,所以就不能一次性的拷贝,需要挑选,不要拷贝xml2、zlib等和fbx无关的lib与include

这样可能会带来一些问题,fbx依赖的libxml和zlib的版本不一定会和我们编译GDAL或者OSG使用的一致,虽然他是静态编译进了fbxsdk里,但是难保会不会有头文件的差异

这个事情需要留个心,如果出现问题了,可以往头文件版本不一致怀疑

由于osg的特殊性,我打包的时候打了三个开发包
在这里插入图片描述

  1. 3rdparty:纯OSG的三方库
  2. only_osg:只有osg的编译完成后的包
  3. _all:上面两个合起来
  • 28
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值