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

Post on 22-Feb-2016

127 Views

Category:

Documents

0 Downloads

Preview:

Click to see full reader

DESCRIPTION

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

TRANSCRIPT

· 什么是 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),巧了,缩写是一样的 ! :-)它是由一个小型核心团队编写和维护,并依靠其不断成长的社区提供支持。

什么是 OGRE

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

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

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

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

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.

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以上编译运行。

OGRE的特性(Material / Shader)

OGRE的特性(网格)

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

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

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

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

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

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):管理应用程序中的纹理的索引和载入。

OGRE设计总览

top related