2012-12-17 61 views
1

我试图在我的项目中打开反走样。首先看D3D9接口:打开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; 

我不知道如何给参数MultiSampleMultisampleQualitynon-maskable multisamplingmaskable有何区别?
2x抗锯齿映射到什么地方?
4x抗锯齿映射到什么地方?
does D3DMULTISAMPLE_2_SAMPLES + 2q == D3DMULTISAMPLE_4_SAMPLES + 1q?

回答

2

MultisampleQuality仅在您将D3DMULTISAMPLE_NONMASKABLE作为多样本类型(doc)时才可用。

D3DMULTISAMPLE_NONMASKABLE仅启用抗锯齿支持(即您所寻找的),质量取决于MultisampleQuality -Parameter,其中1 => 2xAA和2 => 4xAA。

如果您使用的类型不是D3DMULTISAMPLE_NONMASKABLE,例如, 'D3DMULTISAMPLE_2_SAMPLES'您可以在antialising支持书写面具,您可以通过renderstate D3DRS_MULTISAMPLEMASKdoc)设置。这使您可以渲染到多采样rendertarget的特定样本集。最后,所有样本被平均并呈现。我认为这个设置不适合你的问题。