为什么我不能在WP8中使用DXGI_FORMAT_R8_UNORM格式创建渲染目标?

时间:2014-03-28 11:01:39

标签: windows-phone-8 directx

渲染目标描述如下,我的应用程序在调用CreateTexture2D时崩溃,但着色器资源没有任何问题。

CD3D11_TEXTURE2D_DESC renderTargetDesc(
    DXGI_FORMAT_R8_UNORM,
    static_cast<UINT>(m_renderTargetSize.Width),
    static_cast<UINT>(m_renderTargetSize.Height),
    1,
    1,
    D3D11_BIND_RENDER_TARGET
    );

m_d3dDevice->CreateTexture2D(
    &renderTargetDesc,
    nullptr,
    &m_renderTarget
);

但我发现渲染目标支持DXGI_FORMAT_R8_UNORM格式:http://msdn.microsoft.com/en-us/library/windows/desktop/hh404483(v=vs.85).aspx

谁能告诉我问题出在哪里?非常感谢!

1 个答案:

答案 0 :(得分:0)

并非所有硬件都相同,您应首先使用ID3D11Device::CheckFormatSupport {{1}}检查使用情况。

现代GPU非常不支持渲染每像素少于32位的内容。 Windows驱动程序也更有可能在引擎盖后面提供缺失功能的仿真,而不是在应该仔细检查性能和电池消耗的手机上。

您应该在设备创建时添加调试层标志并查看控制台日志,您将看到与呼叫无效参数相关的错误消息。