我想应用PCF为我的阴影,为此,我需要设置我的阴影地图纹理格式为DXGI_FORMAT_R24_UNORM_X8_TYPELESS。设置后,我无法运行我的程序,它会崩溃,没有任何错误。我认为原因是我的GPU不支持这种格式,为此我想检查一下是否支持这种格式。请参阅在这里输入链接描述
这是我的密码
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。另见在这里输入链接描述
发布于 2016-02-14 01:08:34
我无法相信这一点:“设置后,我无法运行我的程序,它会崩溃而没有任何错误”。
在调试模式下运行并一步一步地检查程序在哪一行崩溃。
device->CheckFormatSupport(DXGI_FORMAT_R24_UNORM_X8_TYPELESS,&pSup);Windows说函数会对值进行OR值处理。
所以你只需要和你想要的D3D11_FORMAT_SUPPORT。例如,检查我的深度模板和RenderTargetView是否支持给定格式:
if(pSup & D3D11_FORMAT_SUPPORT_RENDER_TARGET)
{
//render target supports that type
}
if(pSup & D3D11_FORMAT_SUPPORT_DEPTH_STENCIL)
{
//depth stencil supports that type
}回到你的问题,我不认为这是你的硬件的支持问题。你说的是阴影和PCF。所以我觉得你不需要模板。因此,不要使用DXGI_FORMAT_R24_UNORM_X8_TYPELESS作为格式。
当呈现阴影映射时,您希望尽可能高的精度,所以请使用:
祝好运。
https://stackoverflow.com/questions/35377484
复制相似问题