D3D9使用多重采样渲染到纹理

时间:2011-08-02 02:04:54

标签: directx

我想使用多重采样渲染到纹理,然后使用纹理四边形(通过像素着色器将其渲染到后面缓冲区)。一切正常,没有多重采样但我无法弄清楚如何设置它最多使用多重采样。

我尝试过CreateDepthStencilSurface(),但我真的不知道如何处理这个表面,或者甚至是我应该做什么。

请帮忙。

PS - 我正在使用DX9,Win32和C ++

2 个答案:

答案 0 :(得分:3)

你不能,也不能直接。以下是常规解决方法:

  1. 使用IDirect3DDevice9::CreateRenderTarget
  2. 创建多重采样渲染目标
  3. 创建简单的纹理
  4. 渲染到多重采样渲染目标
  5. 使用IDirect3DDevice9::StretchRect将多重采样内容blit到纹理的一个表面
  6. 现在按计划继续使用该纹理。

答案 1 :(得分:0)

创建一个RenderTarget和DepthStencilSurface - 这些必须具有相同的多重采样选项集(相同的SampleDescription)

- 将DepthStencilSurface设置为DepthStencilView

-DepthStencilSurface必须至少具有与RenderTarget一样多的分辨率

- 最高样本描述 - 设置今天大多数卡的支持是8样本和质量32

-Tl blit RenderTarget在DX9上使用StretchRect,在DX10和DX11上使用ResolveSubresource