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
DX9的Presentation 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下设备重置