Graphics Reference
In-Depth Information
D3DFORMAT dfmt = D3DFMT_UNKNOWN;
if(g_bSupportsD16)
dfmt = D3DFMT_D16;
else if(g_bSupportsD32)
dfmt = D3DFMT_D32;
else if(g_bSupportsD24X8)
dfmt = D3DFMT_D24X8;
if(dfmt ! = D3DFMT_UNKNOWN)
{
D3DCAPS9 Caps;
pd3dDevice->GetDeviceCaps(&Caps);
g_MaxMultiSampleType = D3DMULTISAMPLE_NONE;
for(D3DMULTISAMPLE_TYPE imst = D3DMULTISAMPLE_2_SAMPLES; imst < =
D3DMULTISAMPLE_16_SAMPLES;
imst = (D3DMULTISAMPLE_TYPE)(imst + 1))
{
DWORD msQuality = 0;
if(SUCCEEDED(pD3D->CheckDeviceMultiSampleType(Caps.AdapterOrdinal,
Caps.DeviceType, fmt, settings.d3d9.pp.Windowed, imst, &msQuality)))
{
g_bUseMultiSample = true;
g_MaxMultiSampleType = imst;
if(msQuality > 0)
g_dwMultiSampleQuality = msQuality - 1;
else
g_dwMultiSampleQuality = msQuality;
}
}
//Create the Multi-Sample floating point render target
if(g_bUseMultiSample)
{
const D3DSURFACE_DESC* pBackBufferDesc =
DXUTGetD3D9BackBufferSurfaceDesc();
hr = g_pd3dDevice->CreateRenderTarget(pBackBufferDesc->Width,
pBackBufferDesc->Height, fmt, g_MaxMultiSampleType,
g_dwMultiSampleQuality, FALSE, &g_pMSRT, NULL);
if(FAILED(hr))
g_bUseMultiSample = false;
else
{
hr = g_pd3dDevice->CreateDepthStencilSurface(pBackBufferD
esc->Width, pBackBufferDesc->Height, dfmt, g_MaxMultiSampleType,
g_dwMultiSampleQuality, TRUE, &g_pMSDS, NULL);
if(FAILED(hr))
{
g_bUseMultiSample = false;
SAFE_RELEASE(g_pMSRT);
}
}
}
}
Search WWH ::




Custom Search