繁体   English   中英

在DirectX 11中添加更多Texture2D作为Pixel Shader资源时遇到问题

[英]Having trouble adding more Texture2D's as Pixel Shader resources in DirectX 11

我的应用程序在学校项目中遇到了一个非常烦人的问题。 我正在使用延迟渲染,并尝试将光源的pov中的位置添加为新的g缓冲区纹理,并将深度缓冲区纹理添加为光通道中的着色器资源。 我以完全相同的方式处理所有的g缓冲区纹理。

我的问题是在GPU上找不到这些新的着色器资源! 我正在使用RenderDoc调试我的应用程序,在那里我可以看到一切都写到了这些新资源上,并且将它们绑定为着色器资源的调用看起来也不错,但是我仍然只有4个资源通过我以前的经历。

我的代码绝对是一团糟,其中有很多! 因此,如果您希望看到一些可以帮助我的特定内容,可以将其发布。

如果我仅提供一些有关如何调试此类问题的提示,我将非常高兴,并且如果有人知道问题的根源,甚至会更开心。

提前致谢!

调试DirectX应用程序有两个基本的第一步:

  • 确保在运行时检查返回HRESULT每个函数。 如果可以安全地忽略该返回,则它将返回void 检查HRESULT请勿使用== S_OK ,而应使用FAILEDSUCCEEDED宏。 对于“快速失败”错误,一个不错的选择是通过ThrowIfFailed使用C ++异常处理。

  • 启用DirectX调试设备,并在调试输出窗口中查找错误,警告和其他消息。 有关启用它的详细信息,请参见Direct3D 11创建设备剖析Direct3D SDK调试层技巧

这可能无法解决您的问题,但确实可以帮助避免一些愚蠢的错误,这些错误使您花费大量时间进行跟踪。

如果您不熟悉DirectX开发,请查看DirectX Tool Kit教程。

对于调试DirectX 11应用程序,VS 2012或更高版本中的Visual Studio图形诊断功能是一个不错的选择。 您可能符合使用VS 2013或VS 2015 Community Edition的许可要求,并且它包括VSGS在内的所有功能。 参见MSDN

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM