OpenSceneGraph(OSG) — 概述

来源:互联网 发布:梦龙网络计划流水 编辑:程序博客网 时间:2024/05/16 17:42

3D引擎,相信大家都不会陌生,OpenGL,DirectX,可是我们常常听到各个游戏公司还有自己写自己的3D引擎,因为OpenGL太底层了,用OpenGL的好处是利用图形卡的硬件加速功能(当然没有硬件支持,OpenGL也可以软件模拟),但是每个应用都有他的特殊性,把常用的一些渲染模块用面向对象的语言来封装OpenGL指令,能大大加快开发速度,在开发Insight的时候有机会看了NI Germany开发的针对测试测量数据渲染的3D 引擎,想到设计这样的引擎有什么共性呢。Neil跟我提到了一个Open Source的3D库,叫Open Scene Graph( OSG),初步看了一下,觉得很值得学习,这里向大家推荐一下。
OSG的官方网站是: http://www.openscenegraph.com/index.php
OSG是在OpenGL之上的一个跨平台的渲染库,提供针对3D应用的更高层次的渲染,I/O和场景空间组织功能。OSG的源代码是用C++写的,结构清晰,而且其代码风格非常的"面向对象",我这里说面向对象是因为自己有这样的感触,其实向我一样,很多人都会使用C++,甚至在读过C++ Effective系列以后认为自己对C++语言的细节也很了解,但是写出来的东西往往是“披着狼皮的羊”–一个带着C++面具的C代码.我个人觉得OSG是个很好的教材,源代码开放,让我们有机会去看OSG的设计者如何使用面向对象的C++来解决实际问题(一个高层次的3D渲染引擎)。
我们来看看OSG是怎么来的吧:
1997年,Silicon Graphics公司(SGI)雇佣了一个人叫Don Burns,这是一个计算机图形学的fans,同时又是一个滑翔(Hang Gliding)爱好者,Don利用他的空闲时间开发了一个滑翔模拟器并且在Linux系统上做实验,这个模拟器就是OSG的原型啦。2001年OSG上个SIGGRAPH(计算机图形学最权威的会议),在那里,Don有了他第一个客户-Magic Earth。Magic Earth正在寻找一个开源的渲染库来做他们的石油汽应用。接着每年,OSG的成员都在增加,功能也日益强大:
2003年,为了满足Magic Earth的multipipe rendering要求,Producer开发成功。
2004年,Large database paging, terrain support和Shader加入到OSG。
2006年,osgViewer,一个用于管理和渲染场景的库开发完成。用户使用OSG更加方便了。
我不想介绍如何编译,安装,使用OSG,我更想学习OSG的架构,比如类组织,内存管理,事件处理模型,线程管理…

原创粉丝点击