OSG入门教程06:框架架构

本文介绍OSG框架的架构。

架构图

  • 硬件,显卡之类的
  • DirectX 3D/OpenGL,基于显卡及其驱动的开发API
  • OSG,基于OpenGL,以API形式提供的开发框架
    • OSG核心库
    • OSG工具库
    • OSG插件库
    • OSG内省库
  • 应用程序,使用OSG框架开发的程序

OSG核心

OSG核心库

OSG核心库是OSG的核心,主要功能就是实现最核心的场景数据库的组织和管理、对场景图形的操作、对外部数据库的导入提供接口。主要包括四个子库:

  • OSG库:基本数据类库,负责提供基本场景图类,构建场景图形节点,如节点类、状态类、绘制类、向量和矩阵数学计算以及一般的数据类。同时,它包含一些程序所需要的特定功能类,如命令行解析和错误调试信息等。
  • osgUtil库:工具类库,提供通用的公用类,用于操作场景图形及内容,如更新、裁减、遍历、数据统计及场景图的一些优化。
  • osgDB库:数据的读写库,负责提供场景中数据的读写工作,提供了一个文件工具类。注意,OSG中场景图管理是通过遍历场景图层次结构来完成大部分的数据处理工作的。
  • osgViewer库:是在OSG2.0后逐步发展稳定的一个视窗管理库,可以集中各种窗体系统,提供OSG与各种GUI的结合。因此,它是跨平台的3D管理窗口库。

OSG工具库

OSG工具(节点)库主要是对OSG核心库的补充,它实现了一些特定的功能。它主要包括以下6个库:

  • osgFX库:特殊效果节点工具,用于渲染特效节点,包括异性光照特效(osgFX::AnisotropicLighting)、凹凸贴图特效(osgFX::BumpMapping)、卡通渲染特效(osgFX::Cartoon)、刻线特效(osgFX::Scribe)和立方图镜面高光特效(osgFX::SpecularHighlights)等。
  • osgParticle库:粒子系统的节点工具,用于模拟各种天气或者自然现象效果,如雨效、雪效和爆炸模拟等。
  • osgSim库:虚拟仿真效果的节点工具,用于特殊渲染,如地形高程图、光点节点和DOF变换节点等。
  • osgTerrain库:生成地形数据的节点工具,用于渲染高程数据,如TIF、IMAGE和DEM等各种高程数据格式。注意,OSG通过一个开源库GDAL读取这些高程数据。
  • osgText库:文字节点工具,用于向场景中添加文字信息,它完全支持TrueType字体。
  • osgShadow库:阴影节点工具,用于向场景中添加实时阴影,提高场景渲染的真实性。

OSG插件库

OSG插件库是OSG的一个非常重要的特点。通过各种第三方库的支持,OSG能够直接或间接地导入3D模型或图片等场景数据,可以省去大量绘制图形的工作,从而极大地方便了开发者。

OSG内省库(osgIntrospection)

OSG内省库提供了一个与语言无关的运行程序接口,确保了OSG可以在更多的环境下运行。osgIntrospection库允许软件系统使用反射式和自省式的编程范例与OSG交互。应用程序和软件可以使用osgIntrospection库和方法迭代OSG的类型、枚举量和方法,并且不需要了解OSG编译和链接时的过程,即可调用这些方法。Smalltalk和Objective-C等语言包括了内建的反射式和自省式支持,但是C++的开发者通常无法运用这些特性,因为C++并未保留必要的元数(metadata)。为了弥补C++的这一不足,OSG提供了一系列自动生成的、从OSG源代码创建的封装库。用户程序不需要与OSG的封装直接交互,它们将由osgIntrospection整体进行管理。由于osgIntrospection及其封装的结果,许多的语言,如Java、TCL、Lua和Python,都可以与OSG进行交互。


OSG入门教程06:框架架构
https://blog.jackeylea.com/osg/arch-of-osg/
作者
JackeyLea
发布于
2024年2月7日
许可协议