面向用户
OSG是一个开源的三维实时场景图开发引擎,被广泛应用在可视化(飞行、船舶、车辆、工艺等仿真)、增强现实以及医药、教育、游戏等领域。
平台支持
OSG可以支持几乎所有的操作系统平台,它使用OpenGLES促使可以支持手持台、平板以及其它嵌入式设备,使用OpenGL促使其可以在所有的家用笔记本以及小型小型机和集群上进行工作。
许可
LGPL,在国外极少有人完全明白各类开源许可是如何回事,而且你们都在使用开源工程。在中国使用一个引擎就是对该引擎发展的最大贡献,用户多就意味着繁荣和对该引擎越来越多的建立(非原文,译者加)。
技术
OSG采用C++书写,使用了标准模版库(STL)。OSG使用场景树的方法来管理三维场景,使用逻辑组来建立场景树,便于进行高效的渲染和遍历等。
OSG使用运行时对各类主板扩充的实时监测,致使OSG支持从OpenGL1.0到OpenGL4.2以及OpenGLES1.1到2.0的所有设备,所以不管设备新旧,操作系统怎样操作系统平台定制linux解压命令,OSG均能及时辨识出它支持哪些版本的OGL或OES,之后完好的在其上运行。
OSG采用模块化的设计,增加了OSG内部模块的耦合性,促使用户愈发容易理解。而且OSG提供了丰富的示例,通过阅读这种示例可以挺好的学习这种模块(学习反例对于学习OSG是十分重要的---FreeSouth注)。模块化的设计促使用户除了可以只学习和使用自己须要的模块,也可以按照须要订制自己的模块。
OSG的关键特性可以使用如下关键词进行总结:高性能、可扩充性、接口化等,具体如下:
支持基于视锥体的裁剪、基于遮档的裁剪以及其它的小特点裁剪,支持LOD、OpenGL状态排序、VAO、VBO以及着色语言、显示列表等所有的图形学里常常提及的提升效率的招式。它促使OSG成为一个效率高,表现力好的引擎。OSG同样支持顾客化的LOD,顾客可以自己订制基于分页的四叉树场景结构拿来实现复杂场景,具体可以看一下VTP和Delta3D以及osgEarth。
OSG的核心支持所有的OpenGL扩充,哪怕是刚发布的最新扩充,对其进行封装,优化促使用户不用关注OpenGL这些底层的代码和扩充等,就可以快速的搭建基于最新特点的三维应用程序。
除对底层代码的封装外,OSG还有着与其它系统类似Performer以及OpenInventor等各类现代中级系统的结合,这种结合的案例可以促使用户快速的将OSG与自己的系统相结合提供帮助。OSG和现有与三维相关的,尤其是基于OpenGL的系统有着丰富的结合案例,可以看一下业内著名人士array的osgRecipes、osgXI以及osgCookbook从中获取三维系统与OSG相结合的方案灵感。
OSG支持市面上几乎所有的数据格式,无论是图片还是三维模型操作系统平台定制,以及字体等都能挺好的读取。
不仅支持单一的格式外,OSG还有VPB、osgEarth以及其它不常用的扩充来支持对海量数据的处理和读取。
OSG提供一些工具类拿来完成一些互相独立的功能,列出如下:
插口化
OSG做到不依赖任何与操作系统有关的中间件puppy linux,只使用标准C++和OpenGL,初期在IRIX上开发,随即扩充到Linux、Windows、Mac、AIX以及Andriod和其它中国人不关心也用得少的操作系统。
OSG的插口化保证了其高度独立,这也促使其不仅跨各类平台以外,还可以支持各类UI,例如MFC、QT、SDL、GLUT、WxWidget、Cocoa等。OSG的示例中有这种UI与OSG相结合的反例。(国外使用最多的是QT和MFC--FreeSouth注)。
OSG可以运行在多核的CPU和GPU上,这源于OSG对OpenGL显示列表和纹理单元以及拣选、绘制遍历等过程施行了保护举措,使这种阶段可以单独为一个线程也可以在一个线程中串行执行。可以通过osgViewer以及所有的反例来配置当前OSG应用程序的线程模型。
Lua、Python、甚至JAVA都有与OSG的结合。