加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 大数据 > 正文

Ogre API 抽象层

发布时间:2020-12-16 23:13:57 所属栏目:大数据 来源:网络整理
导读:OGRE通过一个抽象层,实现了API无关性。现在有RenderSystem_Direct3D9和RenderSystem_GL两个实现。下面主要通过考察RenderSystem_Direct3D9来分析一下API抽象层及其实现。 API抽象层有两个核心的类:RenderSystem和HardwareBufferManager,另外还有一系列的H

OGRE通过一个抽象层,实现了API无关性。现在有RenderSystem_Direct3D9和RenderSystem_GL两个实现。下面主要通过考察RenderSystem_Direct3D9来分析一下API抽象层及其实现。

API抽象层有两个核心的类:RenderSystem和HardwareBufferManager,另外还有一系列的HardwareVertexBuffer、HardwareIndexBuffer等HardwareBuffer的派生类,RenderWindow、GpuProgram类等等。

RenderSystem是一个3D API的基本功能的抽象,他有两类接口函数,以“_”开头的函数都是属于low level接口。RenderSystem提供的主要接口有:

1. 初始化:initialise(),reinitialise
关闭:shutdown();

2. Draw:_render

3. Transform:_setWorldMatrix,_setViewMatrix,_setProjectionMatrix

4. Light:setAmbientLight,setLightingEnabled,_useLights

5. State:_setTexture,_setTextureCoordSet,_setSceneBlending,_setCullingMode,_setDepthBufferParams,_setFog

6. GPU Program:bindGpuProgram,bindGpuProgramParameters,unbindGpuProgram

7. Listener:addListener,removeListener

另外还有RenderTaret,RenderWindow,ClipPlane等等相关的接口。

RenderSystem的实例创建是在“Root::restoreConfig()”-->“Root::getRenderSystemByName()”-->“Root::getAvailableRenderers()”,通过字符串找到指定的RenderSystem实例。所有可用的RenderSystem实例存放在Root:: mRenderers数组中,由“Root::loadPlugin()”-->“dllStartPlugin”负责创建并通知Root对象。

HardwareBufferManager是3D API抽象层的另外一个重要的类。OGRE把HardwareBufferManager和RenderSystem分开是一个很好的设计。它主要负责抽象VertexBuffer,IndexBuffer的创建、销毁等工作。

D3D9HardwareBufferManager的实例是在D3D9RenderSystem::createRenderWindow()函数中创建的(只有创建Primary Window时才创建)。
HardwareBufferManager提供了releaseDefaultPoolResources()和recreateDefaultPoolResources()接口,用来处理Device Lost,这个两个操作都是施加于成员数据VertexBufferList mVertexBuffers和IndexBufferList mIndexBuffers之上的。在recreate之后VB,IB中的数据是如何恢复的呢?


D3D9TextureManager从TextureManager派生,用来创建D3D9Texture对象。


本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/wangwang123654/archive/2009/12/10/4980080.aspx

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读