我正在试图弄清楚如何在DirectX中调试像素和顶点着色器,我尝试过使用Pix for Windows,但发现它非常错误并且有效地无法运行。有没有一种方法可以让我在自己的应用程序中调试这些着色器?
答案 0 :(得分:5)
简而言之,没有。
是的pix有点儿马车,但自首次发布以来已经提升了MASSIVELY。确保您运行的是最新的SDK!
答案 1 :(得分:5)
我不知道有任何用于调试hlsl-shaders的第三方工具,但我通过使用一些简单的技术调试它有很好的经验。
您可以在cpu上复制渲染目标并将其存储到位图中,将其打印到终端,或者在CPU调试器中访问它。
如果存在错误,您应首先检查您使用的缓冲区是否确实具有正确的值,在开始时经常会发生一些纹理是使用错误的参数创建的,或者数据是否在另一个订单中...根据我的经验,这是一个常见的错误来源。
答案 2 :(得分:5)
只需将调试信息输出为颜色即可。例如,您可以输出255 *(正常+ 1)作为r,g,b,您可以输出一些中间着色器变量作为颜色,或者您可以检查它是否在着色器的边界内,如果是黑色则输出白色如果不是。这通常有帮助。
答案 3 :(得分:2)
PIX for Windows附带DirectX SDK(从2010年6月起我可以验证),并允许您直观地调试您正在设置的状态,并允许您逐行浏览着色器。它是一个救生员。