我想为我的阴影应用PCF,为此我需要将阴影贴图纹理格式设置为DXGI_FORMAT_R24_UNORM_X8_TYPELESS
。设置后我无法运行我的程序,它崩溃没有任何错误。我认为原因是我的GPU不支持格式化,为此我想检查格式支持。见enter link description here
这是我的代码
UINT pSup;
result = device->CheckFormatSupport(DXGI_FORMAT_R24_UNORM_X8_TYPELESS,&pSup);
if (result != S_OK)
{
MessageBox(NULL, L"Dont support that format", L"Error", MB_OK);
}
但如何使用pSup
。我需要检查它是否支持D3D11_FORMAT_SUPPORT_SHADER_SAMPLE_COMPARISON
,D3D11_FORMAT_SUPPORT_RENDER_TARGET
和D3D11_FORMAT_SUPPORT_DEPTH_STENCIL
。
另请参阅enter link description here
答案 0 :(得分:2)
我无法相信:“设置后我无法运行我的程序,它崩溃没有任何错误”
在调试模式下运行并逐步检查程序崩溃的哪一行。
if(bob.b == 0){
printf("no non-zero number stored in b");
}
Windows表示该函数对值进行OR运算。
所以你只需要和你想要的D3D11_FORMAT_SUPPORT。 例如,检查我的depthstencil和RenderTargetView是否支持给定的格式:
device->CheckFormatSupport(DXGI_FORMAT_R24_UNORM_X8_TYPELESS,&pSup);
回到你的问题,我不认为这是你硬件的支持问题。你在谈论阴影和PCF。所以我认为你不需要模板位。因此,请勿使用DXGI_FORMAT_R24_UNORM_X8_TYPELESS作为格式。
渲染阴影贴图时,您希望尽可能精确,所以请使用: