OSG的组成结构

简介: OSG的组成结构

核心结构

OSG的功能类采用“命名空间+类名称”的形式来命名。命名空间的命名方式为:第一个单词小写,后继单词的首字母大写,例如osg、osgUtil、osgViewer等;类的名称则采用每个单词首字母大写的组合,例如MatrixTransform、NodeVisitor等。功能类成员函数使用小写字幕开头,之后每个单词的首字母大写,例如setMatrix()、setAttributeAndModes()等,如果试图描述某个功能类的成员函数,通常使用如下方式书写:osg::MatricTransform::setMatrix().

OSG引擎的组成部分包括一系列动态链接库(.dll/.so)、插件(.dll/.so)、供开发者使用的静态链接库(.lib/.a)、头文件,以及可以执行的工具程序和示例,按照其作用来划分,可以大致分为以下五种类型。


OSG核心库:提供了基本的场景图形和渲染功能,以及3D图形程序所需要的某些特定功能实现。OSG的核心库包括:

osg库:其中包括构建场景图形的场景图形节点类、用作向量和矩阵运算的类;可绘制体和几何体类;用于描述和管理渲染状态的类;以及图形程序所需要的典型功能类;例如命令行参数解析,简单动画路径以及错误和警告输出等。

osgDB库:其中包括用于2D和3D文件读写的插件类注册器,以及用于访问和读写这些插件的特定功能类;此外还提供了数据的动态分页调度机制;可以支持大规模数据的动态度如何让卸载

osgUtil库:使用工具库,其中包括场景图形的数据统计和优化工具、渲染后台工具、场景裁剪工具;以及大量几何操作相关的类,例如德洛内三角化、三角条带化、发现坐标自动生成、场景树优化等工具。

osgGA库:提供了各种视景窗口交互事件的管理工具,用于构建一个与平台无关的人机设备抽象层。

osgViewer库:视景器工具库,即单个或多个场景观察和管理的整合工具,以及与平台相关的底层图形设备代码;同时还提供了多线程,多CPU。多显示器的渲染机制。

节点扩展工具箱(NodeKits):扩展了核心OSG场景图形节点的功能,以提供高级节点类型和渲染特效。节点扩展库包括:

osgAnimation:场景动画处理库,包括各种关键帧的定义、插值方式、动画管理和融合、动画路径、角色动画、变形动画、渐进动画等。

osgFX:场景特效库 ,包括多种场景特效的实现,例如各向异性光照、卡通着色、凹凸贴图等。随着OpenGL着色语言的发展的逐步应用,这个库已经被逐渐弱化了。

osgManipulator:场景对象操作库,用于实现场景对象的用户交互控制,包括移动、旋转和缩放等。

osgParticle:粒子特效库,用于实现简单或复杂的场景粒子效果,例如雨、雪、烟雾、火焰。爆炸、运动尾迹等

osgShadow:阴影特效库,用于实现多种形式的物体阴影绘制,包括阴影贴图(ShadowMap)、阴影纹理(ShadowTexture)、阴影体(Shadow Volume),以及多种基于GPU的最新阴影实现技法。

osgSim:仿真工具库,包括DOF节点变化、纹理覆盖节点、点光源节点,以及多种虚拟仿真相关的集合。

osgTerrain 地形处理库,用于实现实时的地形读取或显示

osgText:文字处理库,用于实现点阵或者矢量文字的显示,包括纹理形式和三维文字形式,并支持多种字体的选择和多国语言编码

osgVolume:体渲染实现库,用于实现各种体渲染相关的技术

osgWidget:三维控件库,用于实现三维场景中的用户交互控件,乐如编辑框、按钮等,这在游戏或者三维场景聊天工具的开发中十分使用。

OSG文件读写插件:其中包括2D图像,3D图像和其他类型文件的读写功能插件,可以任意扩展或删减

内省库:提供OSG与其他开发环境集成的功能,例如脚本语言Python等

工具程序和示例集:提供了实用的工具和超过100个有关OSG使用和功能实现的例子。

内容来之《OpenSceneGraph 三维渲染引擎设计与实践》


目录
相关文章
|
存储 编译器
[Eigen中文文档] 深入了解 Eigen - 类层次结构
本页面介绍了Eigen类层次结构中 Core 类的设计及其相互关系。一般用户可能不需要关注这些细节,但对于高级用户和Eigen开发人员可能会有用。
275 0
|
2月前
|
数据可视化
OSG嵌入QT的简明总结2
OSG嵌入QT的简明总结2
45 1
|
存储 编译器 对象存储
[Eigen中文文档] 包含Eigen对象的结构体
如果定义的结构体包含固定大小的可向量化 Eigen 类型成员,则必须确保对其调用 operator new 来分配正确的对齐缓冲区。如果仅使用足够新的编译器(例如,GCC>=7、clang>=5、MSVC>=19.12)以 [c++17] 模式编译,那么编译器会自动处理所有事情,可以跳过本节。 否则,必须重载它的 operator new 以便它生成正确对齐的指针(例如,Vector4d 和 AVX 的 32 字节对齐)。幸运的是,Eigen 为提供了一个宏 EIGEN_MAKE_ALIGNED_OPERATOR_NEW 来完成这项工作。
189 0
|
定位技术
GIS开发:分享Mapbox Vector tiles
GIS开发:分享Mapbox Vector tiles
224 0
GIS开发:分享Mapbox Vector tiles
|
Scala
spinal HDL - 04 - Spinal HDL - 组件、层次结构和区域
spinal HDL - 04 - Spinal HDL - 组件、层次结构和区域
288 0
spinal HDL - 04 - Spinal HDL - 组件、层次结构和区域
|
小程序 图形学 开发者
OpenGL学习笔记(三):了解管线、VAO、VBO的关系,介绍Qt如何使用OpenGL
OpenGL学习笔记(三):了解管线、VAO、VBO的关系,介绍Qt如何使用OpenGL
|
定位技术
SLAM本质剖析-Eigen
SLAM本质剖析-Eigen
SLAM本质剖析-Eigen
|
C++
OSG-获取OSG的源代码和第三方库并编译
OSG-获取OSG的源代码和第三方库并编译
360 0
OSG-获取OSG的源代码和第三方库并编译
|
C语言
《OpenGL ES 2.0 Programming Guide》第12章 “最简单的本地纹理+FBO+VBO”示例代码【C语言版】
《OpenGL ES 2.0 Programming Guide》第12章 “最简单的本地纹理+FBO+VBO”示例代码【C语言版】
121 0
《OpenGL ES 2.0 Programming Guide》第12章 “最简单的本地纹理+FBO+VBO”示例代码【C语言版】
|
C语言
《OpenGL ES 2.0 Programming Guide》第9章 “最简单的本地纹理+VBO”示例代码【C语言版】
《OpenGL ES 2.0 Programming Guide》第9章 “最简单的本地纹理+VBO”示例代码【C语言版】
150 0
《OpenGL ES 2.0 Programming Guide》第9章 “最简单的本地纹理+VBO”示例代码【C语言版】