您的位置:首页 > 运维架构

OpenSceneGraph(OSG) — 概述

2011-01-07 17:44 218 查看
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的架构,比如类组织,内存管理,事件处理模型,线程管理…
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: