首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使用D3D11_FORMAT_SUPPORT

如何使用D3D11_FORMAT_SUPPORT
EN

Stack Overflow用户
提问于 2016-02-13 07:53:37
回答 1查看 419关注 0票数 1

我想应用PCF为我的阴影,为此,我需要设置我的阴影地图纹理格式为DXGI_FORMAT_R24_UNORM_X8_TYPELESS。设置后,我无法运行我的程序,它会崩溃,没有任何错误。我认为原因是我的GPU不支持这种格式,为此我想检查一下是否支持这种格式。请参阅在这里输入链接描述

这是我的密码

代码语言:javascript
复制
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_COMPARISOND3D11_FORMAT_SUPPORT_RENDER_TARGETD3D11_FORMAT_SUPPORT_DEPTH_STENCIL。另见在这里输入链接描述

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-02-14 01:08:34

我无法相信这一点:“设置后,我无法运行我的程序,它会崩溃而没有任何错误”。

在调试模式下运行并一步一步地检查程序在哪一行崩溃。

代码语言:javascript
复制
device->CheckFormatSupport(DXGI_FORMAT_R24_UNORM_X8_TYPELESS,&pSup);

Windows说函数会对值进行OR值处理。

所以你只需要和你想要的D3D11_FORMAT_SUPPORT。例如,检查我的深度模板和RenderTargetView是否支持给定格式:

代码语言:javascript
复制
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作为格式。

当呈现阴影映射时,您希望尽可能高的精度,所以请使用:

  • 纹理的DXGI_FORMAT_R32_TYPELESS
  • 深度模版的DXGI_FORMAT_D32_FLOAT
  • DXGI_FORMAT_R32_FLOAT for ShaderResourceView

祝好运。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/35377484

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档