· 什么是 ogre · ogre 的起源 · ogre 特性 · ogre 设计总览 · ogre 程序样 例

15
· 什什什 OGRE · OGRE 什什什 · OGRE 什什 · OGRE 什什什什 · OGRE 什什什什

Upload: selah

Post on 22-Feb-2016

127 views

Category:

Documents


0 download

DESCRIPTION

· 什么是 OGRE · OGRE 的起源 · OGRE 特性 · OGRE 设计总览 · OGRE 程序样 例. 什么 是 OGRE. Oh ! GRE…. 哦, GRE 啊 (God Reads English) Ogre [‘ əuɡə ] 童话中的怪物 - PowerPoint PPT Presentation

TRANSCRIPT

Page 1: ·  什么是 OGRE · OGRE 的起源 · OGRE 特性 · OGRE 设计总览 · OGRE 程序样 例

· 什么是 OGRE· OGRE的起源· OGRE特性· OGRE设计总览· OGRE程序样例

Page 2: ·  什么是 OGRE · OGRE 的起源 · OGRE 特性 · OGRE 设计总览 · OGRE 程序样 例

什么是 OGRE

• Oh! GRE…. 哦, GRE啊 (God Reads English)• Ogre [‘əuɡə] 童话中的怪物• Ogre是一个开源图形渲染引擎( Open-source

Graphics Rendering Engine) ,其实它的名字的原意是面向对象图形渲染引擎( Object-oriented Graphics Rendering Engine),巧了,缩写是一样的 ! :-)它是由一个小型核心团队编写和维护,并依靠其不断成长的社区提供支持。

Page 3: ·  什么是 OGRE · OGRE 的起源 · OGRE 特性 · OGRE 设计总览 · OGRE 程序样 例

什么是 OGRE

• Ogre“只是”一个图形渲染引擎,而不是游戏引擎。他主要为多平台的图形渲染提供一个通用的解决方案。• 对于游戏开发或学术研究而言, Ogre尽管提供诸如向量、矩阵和内存控制等功能,但他不是一个一体化的解决方案,例如:

Ogre不包括声音、网络和物理特性的支持。

Page 4: ·  什么是 OGRE · OGRE 的起源 · OGRE 特性 · OGRE 设计总览 · OGRE 程序样 例

OGRE 3D的起源• 在二十世纪八九十年代,世界上似乎还只有 id公司的约翰 ·卡马克开发的 3D游戏引擎。• 当时在英国有一个叫做“ Steve

Streeting”的软件工程师,从一个做了十年软件工程的技术人员的角度,他认为原始的 3D游戏引擎还是有很多可以改进的地方,特别是在软件结构和框架上。

Page 5: ·  什么是 OGRE · OGRE 的起源 · OGRE 特性 · OGRE 设计总览 · OGRE 程序样 例

OGRE 3D的起源Steve ‘sinbad’ Streeting started the engine now known as OGRE in 2000, after having had the crazy idea of creating a well designed, scene-structure independent engine. Steve was the ‘benign dictator’ on the OGRE project for 10 years until April 2010, at which point he retired for health reasons and is now a more occasional contributor. Steve has a long history in graphics coding going back to the early 90 s ′as well as having more than 15 years of more ‘traditional’ professional software development experience under his belt.

Page 6: ·  什么是 OGRE · OGRE 的起源 · OGRE 特性 · OGRE 设计总览 · OGRE 程序样 例

OGRE的特性(支持的平台与 3D API)• 支持的平台与 3D API• 支持 Direct3D(支持 DirectX 9,10和 11)和

OpenGL。• 支持Windows(所有主要版本), Linux和Mac

OSX• 可在Windows平台上的 Visual C++ 6, Visual C+

+ .NET, Visual C++ .NET 2003以及 Visual C++ 2005编译运行( Visual C++2003以前的版本需要STLport;注意: Ogre 1.2.0以后不再支持 Visual C++ 6 / Visual C++ 7.0)。

• 可在 Linux和Mac OSX gcc 3以上编译运行。

Page 7: ·  什么是 OGRE · OGRE 的起源 · OGRE 特性 · OGRE 设计总览 · OGRE 程序样 例

OGRE的特性(Material / Shader)

Page 8: ·  什么是 OGRE · OGRE 的起源 · OGRE 特性 · OGRE 设计总览 · OGRE 程序样 例

OGRE的特性(网格)

Page 9: ·  什么是 OGRE · OGRE 的起源 · OGRE 特性 · OGRE 设计总览 · OGRE 程序样 例

OGRE的特性(特效)• 粒子系统,包括可轻松扩展的粒子发射器和粒子修改器(可通过插件自己定义)。系统可以通过文本脚本轻松修改。为达到最佳表现效果而自动使用粒子池。• 支持 skyboxes, skyplanes和 skydomes,非常容易使用。• 用于 sprite图像的公告板。• 透明对象自动管理(渲染顺序及深度缓冲器设置全都已经为您设置好了)。• 层系统允许您建立HUDs和使用 2D和 3D对象的菜单。• 灵活的雾控制。• 软件 dot3凹凸贴图。• Cube mapping• 后处理效果

Page 10: ·  什么是 OGRE · OGRE 的起源 · OGRE 特性 · OGRE 设计总览 · OGRE 程序样 例

OGRE设计总览• 对设计模式的使用 Ogre中使用设计模式来提高程序库的可用性和弹性。例如,Ogre使用观察者(Observer)模式将自己的每一个状态变化通知给应用程序,客户代码通过注册来监听Ogre中事件和状态的改变来得到相应通知(例如演示程序中使用的 FrameListener对象,可以监听到应用程序每一帧渲染的开始和结束事件)。单件模式( Singleton)用来保证一个类只有一个实例,迭代器模式( Iterator)用来历遍一个数据结构中的所有数据。访问者模式(Visitor)可以让你在不改变对象(例如,场景中所有节点)的前提下,增加定义一个新的对象的操作。外观模式( Façade)为子系统中的一组操作接口报漏给调用层一个统一的接口。最后,工厂模式( Factory)(以及它的近亲抽象工厂模式,Abstract Factory)广泛的用来创建抽象接口的实例。

Page 11: ·  什么是 OGRE · OGRE 的起源 · OGRE 特性 · OGRE 设计总览 · OGRE 程序样 例

OGRE设计总览• 场景图与场景内容分离

Page 12: ·  什么是 OGRE · OGRE 的起源 · OGRE 特性 · OGRE 设计总览 · OGRE 程序样 例

OGRE设计总览• 插件体系 Ogre被设计成可扩展的。与传统的渲染 API设计区别的地方,就是 Ogre并没有强迫用户一定要使用某一个组成部分。使用者可以根据自己需要来组合不同的插件来实现不同的效果。 Ogre通过一套固有的“契约模型( contract-based)”来支持相应的功能。换句话说, Ogre被设计成为类似集合的装置,里面包含着一些支持不同功能的元素,这些元素通过一套共识的接口(契约)来实现之间的通信协作。

Page 13: ·  什么是 OGRE · OGRE 的起源 · OGRE 特性 · OGRE 设计总览 · OGRE 程序样 例

OGRE设计总览• Ogre中的管理器日志管理器( LogManager):发送日志信息给输到出流,也可以把信息送到需要使用的代码中去。·控制器管理器( ControllerManager):对控制器( Controller)进行管理,所谓控制器,就是基于变量输入来改变其他类状态的工具类;常用于对动态纹理( Animating Textures)和材质的控制。·动态链接库管理器( DyLibManager):负责管理动态链接库(Windows上的 DLL, Linux上的共享对象),是 Ogre插件体系实现的基础。也会在关闭系统时候卸载库。·平台管理器( PlatformManager):用于对不同硬件和操作系统抽象出来具体的通用对象进行管理。比如其中包括了计时器( Timer)和不同的窗体(例如启动 Ogre时用来配置渲染系统的对话框)。·合成器管理器( CompositorManager):用于管理合成器,以便在屏幕空间实现 2D后处理特效。·档案管理器( ArchiveManager):管理档( Archive)所使用的不同“容器”,例如 ZIP文件或者系统目录。·粒子特效管理器( ParticleSystemManager):管理粒子特效,以及维护发射器和效果器的实现和细节。·材质管理器(MaterialManager):维护应用程序中所有已经载入的材质,并允许不同对象共享同名的材质实例。

Page 14: ·  什么是 OGRE · OGRE 的起源 · OGRE 特性 · OGRE 设计总览 · OGRE 程序样 例

OGRE设计总览· 骨骼动画管理器( SkeletonManager):维护应用程序中所有已经载入的骨骼动画,并允许不同的模型共享骨骼动画实例。· 模型管理器(MeshManager):维护应用程序中所有已经载入的模型,并允许不同实体共享同名的模型对象实例。• 高级 GPU程序管理器( HighLevelGpuProgramManager):维护,载入,以及编译程序中所有使用的高级 GPU着色程序(包括 HLSL, GLSL或者 Cg写的 GPU程序)• GPU程序管理器( GpuProgramManager):维护和载入汇编语言的 GPU程序,也可以支持高级 GPU程序编译成的汇编着色语言。• ·外部纹理资源管理器( ExternalTextureSourceManager):管理外部贴图源类的实例,例如那些使用外部视频流生成的即时纹理。• ·字体管理器( FontManager):管理和载入用于表层( Overlay)中文本渲染的字体。• ·资源组管理器( ResourceGroupManager):作为“接触点”,用于载入和管理已经注册的应用程序资源,比如模型和材质。• ·表层管理器( OverlayManager):管理载入和创建 2D层类的接口,通常用于

HUD, GUI或者其他渲染到场景最上层的 2D内容。• ·硬件缓存管理器( HardwareBufferManager):管理硬件缓存(像素缓存,顶点缓存,索引缓存等)。• ·纹理管理器( TextureManager):管理应用程序中的纹理的索引和载入。

Page 15: ·  什么是 OGRE · OGRE 的起源 · OGRE 特性 · OGRE 设计总览 · OGRE 程序样 例

OGRE设计总览