Gamebryo3.0SDK翻译-RendererDx9

RendererDx9

一、 NiDx9Renderer基础

1. 创建一个Dx9Renderer

在全屏下需要设定屏幕的大小和深度。

不支持多渲染器共存

简单版:

static NiDX9Renderer* Create(unsigned int uiWidth,

unsigned int uiHeight,

unsigned int uiUseFlags,

NiWindowRef kWndDevice,

NiWindowRef kWndFocus)

高级版:

static NiDX9Renderer* Create(unsigned int uiWidth, unsigned int uiHeight,

unsigned int uiUseFlags,

NiWindowRef kWndDevice,

NiWindowRef kWndFocus,

unsigned int uiAdapter = D3DADAPTER_DEFAULT,

DeviceDesc eDesc = DEVDESC_PURE,

FrameBufferFormat eFBFormat = FBFMT_UNKNOWN,

DepthStencilFormat eDSFormat = DSFMT_UNKNOWN,

PresentationInterval ePresentationInterval = PRESENT_INTERVAL_ONE,

SwapEffect eSwapEffect = SWAPEFFECT_DEFAULT,

unsigned int uiFBMode = FBMODE_DEFAULT,

unsigned int uiBackBufferCount = 1,

unsigned int uiRefreshRate = REFRESHRATE_DEFAULT)

缓存:frame Buffer、depth buffer、stencil buffer

DX9Presentation Interval

DX9 Swap Effect

DX9 Framebuffer Mode

DX9 Monitor Refresh Rate

2. 多Dx9Renderer并存

不支持

3. 多窗口渲染

使用CreateSwapChainRenderTargetGroup,只能在窗口模式下使用。

创建渲染窗口会消耗VRAM

4. 渲染到纹理

5. 关闭Dx9Renderer

所有的纹理和几何资源必须在renderer关闭之前被销毁。几何体(包括屏幕空间的几何体)、rendered textures 、 cube maps

6. 改变显示参数

RecreateStatus Recreate(unsigned int uiWidth,

unsigned int uiHeight,

unsigned int uiUseFlags,

NiWindowRef kWndDevice = 0,

FrameBufferFormat eFBFormat = FBFMT_UNKNOWN, DepthStencilFormat eDSFormat = DSFMT_UNKNOWN, PresentationInterval ePresentationInterval = PRESENT_INTERVAL_ONE, SwapEffect eSwapEffect = SWAPEFFECT_DEFAULT, FramebufferMode eFBMode = FBMODE_DEFAULT,

unsigned int uiBackBufferCount = 1, unsigned int uiRefreshRate = REFRESHRATE_DEFAULT)

7. Dx9的设备描述

NiDX9SystemDesc允许应用程序创建一个参数配置窗口,用于创建一个渲染器。

8. DX9Renderer的线程处理

二、 NiDx9Renderer的特征和局限性

1. DX9中的硬件蒙皮

2. DX9中的抗锯齿(Antialiasing)

NiDX9Renderer支持基于多采样器背面缓冲(multisample backbuffers)的全屏抗锯齿(full-scene antialiasing)。如果使用抗锯齿,此时必须设定多采样帧缓冲区模式(multisampled framebuffer mode-FBMODE_MULTISAMPLES_*)

3. DX9中的光照特征和局限性

目前每一个几何体支持8个顶点硬件光照,超过的将被自动舍弃

4. DX9中的Left-Right交换

5. DX9中的顶点雾

6. 在DX9和GB下使用Direct3D纹理

应用程序可以提供Direct3D纹理,并封装成GB的纹理-NiTexutre(NiDX9Renderer::CreateNiTextureFromD3DTexture)。

7. DX9下的纹理特性和局限性

(1) NiDX9Renderer要求显示设备具有单步处理至少两个纹理(two textures in a single pass)的能力

(2) DX9渲染器支持rendered和source cube mapping

8. DX9下的硬件纹理阶段

9. DX9下的cliped projected textures

10. DX9下的多纹理处理的局限性

DX9 Renderer每个顶点最多支持8个纹理坐标,更多的将被自动舍弃

11. W-Buffering支持

12. DX9下的顶点颜色范围

[0.0, 1.0],

13. DX9下设备重置

posted on 2011-02-27 14:11  arun  阅读(665)  评论(0编辑  收藏  举报

导航