- 180
- 0
- 约8千字
- 约 16页
- 2018-08-13 发布于福建
- 举报
三维渲染引擎OGRE与OSG比较综述①
三维渲染引擎OGRE与OSG的比较综述①
摘要:随着虚拟现实技术的发展,国外出现了许多优秀的三维渲染引擎。本文对OGRE与OSG这两个三维图形渲染引擎做个简单的比较,介绍他们在运行效率、场景管理、功能支持、可扩展性等方面的异同。
关键词:三维渲染引擎 OGRE OSG
中图分类号:TP393.18 文献标识码:A 文章编号:1007-9416(2011)10-0175-03
1、引言
随着计算机可视化、虚拟现实技术的飞速发展,人们对实时真实感渲染以及场景复杂度提出了更高的要求。传统的直接使用底层图形接口如OpenGL、DirectX开发图形应用的模式越来越暴露出开发复杂性大、周期性长、维护困难的缺陷。为此国外出现了许多优秀的三维渲染引擎,比如Delta3D,OGRE,OSG,Unity3d,VTK等。渲染引擎的作用是要优化遍历和显示三维模型。本文主要对OGRE与OSG这两个三维图形渲染引擎做个简单的比较,介绍他们在运行效率、场景管理、功能支持、可扩展性等方面的异同。通过了解两者差异后,可以根据不同的项目需求,选择合适的渲染引擎。
2、OGRE与OSG渲染引擎简介及特性
2.1 OGRE
OGRE(Object-Oriented Graphics Rendering Engine)即:面向对象图形渲染引擎,是一个用C++开发的面向场景、非常灵活的3D引擎,诞生于1999年。它旨在让开发人员更容易、更直接地利用硬件加速的3D图形系统开发应用。这个类库隐藏了底层系统库Direct3D和OpenGL的所有细节,并支持多种高级特性,提供了一个基于现实世界对象和其他直观类的接口。目前官网中OGRE的最新版本为1.7.3。
OGRE几乎拥有了商业3D渲染引擎的全部特性,甚至有些方面超越了它们[2]:(1)自动处理渲染状态和空间剪裁;(2)支持所有纹理混合和绑定技术,同时支持对GPU编程技术,支持汇编语言和所有高级语言形式的各种着色语言,其中高级语言包括:Cg,HLSL和GLSL;(3)强大且成熟的材质管理和脚本系统,可以不动一行代码去进行材质维护;(4)支持多种纹理图片格式,包括:PNG,TGA,DDS,TIF,GIF,JPG,同时支持特殊格式的纹理;(5)全面支持对顶点和索引缓存(vertex and index buffers)、顶点声明(vertex declarations)以及贴图缓存(buffer mappings);(6)给出以插件方式链接不同场景结构的接口,允许你使用适合自己应用程序的场景体系;(7)成熟且可扩展的资源管理和载入系统,文件系统支持的文件包括zip,pk3格式等等。
2.2 OSG
OSG(OpenSceneGraph)是一个高性能的开源三维图形引擎,是一个开放源码,跨平台的图形开发包,它为诸如飞行器仿真,虚拟现实,科学计算可视化这样的高性能图形应用程序开发而设计。它基于场景图的概念,它提供一个封装了OpenGL底层细节的面向对象的框架,从而能把开发者从实现和优化底层图形的调用中解脱出来,并且它为图形应用程序的快速开发提供很多附加的实用工具。OSG大概诞生于1997年,发展至今其功能特性涵盖了大规模场景的分页支持,多线程、多显示的渲染,粒子系统与阴影,各种文件格式的支持。目前官网的稳定版本为3.0.1。
OSG的引擎特性:
2.2.1 场景图
OSG让所有的人在场景图技术中受益,无论是商业还是非商业的用户,达到工业级的标准;方便了图形图象数据的保存;高性能高效率;支持视图投影剔除(view frustum culling),隐藏面剔除(occlusion culling),小特性剔除(small feature culling),细节层次节点(LOD),状态排序(state sorting),顶点数组,顶点缓冲对象(vertex buffer objects),OpenGL着色语言和显示列表(display lists),以上所列都是场景图内核的一部分。它们共同使OSG成为一个高性能的图形库变为可能。OSG也支持绘制进程(drawing process)的定制,比如场景图的连续细节层次(CLOD)的网格。
2.2.2 使用了自动记数功能
OSG中使用了智能指针的使用,使得开发人员脱离了繁重的内存分配与释放的工作;减少了由于人为的原因造成的内存泄露的状况。
2.2.3 快速开发
场景图的内核封装了包括最新扩展的大部分OpenGL底层功能,提供诸如剔除和排序的渲染优化功能,同样提供能快速开发高性能图形应用程序的一整套补充库,开发者可以更快地掌握实质性内容和如何操控这些它们,而不再是底层的代码。
原创力文档

文档评论(0)