2

我正在尝试在我的项目中打开抗锯齿功能。先看d3d9界面:

HRESULT CreateRenderTarget(
  [in]           UINT Width,
  [in]           UINT Height,
  [in]           D3DFORMAT Format,
  [in]           D3DMULTISAMPLE_TYPE MultiSample,
  [in]           DWORD MultisampleQuality,
  [in]           BOOL Lockable,
  [out, retval]  IDirect3DSurface9 **ppSurface,
  [in]           HANDLE *pSharedHandle
);

typedef enum D3DMULTISAMPLE_TYPE {
  D3DMULTISAMPLE_NONE           = 0,
  D3DMULTISAMPLE_NONMASKABLE    = 1,
  D3DMULTISAMPLE_2_SAMPLES      = 2,
  D3DMULTISAMPLE_3_SAMPLES      = 3,
  D3DMULTISAMPLE_4_SAMPLES      = 4,
  D3DMULTISAMPLE_5_SAMPLES      = 5,
  D3DMULTISAMPLE_6_SAMPLES      = 6,
  D3DMULTISAMPLE_7_SAMPLES      = 7,
  D3DMULTISAMPLE_8_SAMPLES      = 8,
  D3DMULTISAMPLE_9_SAMPLES      = 9,
  D3DMULTISAMPLE_10_SAMPLES     = 10,
  D3DMULTISAMPLE_11_SAMPLES     = 11,
  D3DMULTISAMPLE_12_SAMPLES     = 12,
  D3DMULTISAMPLE_13_SAMPLES     = 13,
  D3DMULTISAMPLE_14_SAMPLES     = 14,
  D3DMULTISAMPLE_15_SAMPLES     = 15,
  D3DMULTISAMPLE_16_SAMPLES     = 16,
  D3DMULTISAMPLE_FORCE_DWORD    = 0xffffffff 
} D3DMULTISAMPLE_TYPE, *LPD3DMULTISAMPLE_TYPE;

我不确定如何给出参数MultiSampleMultisampleQuality. non-maskable multisampling和有什么区别maskable
2x 抗锯齿映射到什么?
4x 抗锯齿映射到什么?
D3DMULTISAMPLE_2_SAMPLES + 2q == D3DMULTISAMPLE_4_SAMPLES + 1q?

4

1 回答 1

2

MultisampleQuality仅当您采用D3DMULTISAMPLE_NONMASKABLEmultisampletype ( doc ) 时才可用。

D3DMULTISAMPLE_NONMASKABLE仅启用抗锯齿支持(这就是您要寻找的),质量由MultisampleQuality-Parameter 确定,其中 1 => 2xAA 和 2 => 4xAA。

如果您使用其他类型D3DMULTISAMPLE_NONMASKABLE,例如“D3DMULTISAMPLE_2_SAMPLES”,您可以在抗锯齿支持的基础上启用额外的书写掩码,您可以通过渲染状态D3DRS_MULTISAMPLEMASK( doc ) 设置该掩码。这使您能够渲染到多重采样渲染目标的特定样本集。最后对所有样本进行平均并呈现。我认为此设置不适合您的问题。

于 2012-12-20T10:00:05.963 回答