Debugging 你们是如何调试GLSL的?

Debugging 你们是如何调试GLSL的?,debugging,opengl,glsl,Debugging,Opengl,Glsl,我最近试图编写一些GLSL着色器代码,但当着色器没有绘制出我所期望的内容(基本上,屏幕上的所有内容都是黑色的)时,我运气不好。以下是我尝试过的工具: Nvidia NSight VS integration-当我启动应用程序时,它立即崩溃,尝试将其他应用程序与简单的三角形绘图结合起来,但仍然没有运气。通过互联网和Nvidia论坛搜索,似乎这是一个常见的问题,似乎没有找到任何解决方案 glslDevil-它可以启动应用程序,但在任何渲染发生之前,程序会一直退出,GL跟踪是 wglMakeCurre

我最近试图编写一些GLSL着色器代码,但当着色器没有绘制出我所期望的内容(基本上,屏幕上的所有内容都是黑色的)时,我运气不好。以下是我尝试过的工具:

  • Nvidia NSight VS integration-当我启动应用程序时,它立即崩溃,尝试将其他应用程序与简单的三角形绘图结合起来,但仍然没有运气。通过互联网和Nvidia论坛搜索,似乎这是一个常见的问题,似乎没有找到任何解决方案

  • glslDevil-它可以启动应用程序,但在任何渲染发生之前,程序会一直退出,GL跟踪是

    wglMakeCurrent(0, 0)
    wglDeleteContext(00010000)
    ChildProcess exited
    
    调用后运行另一个应用程序时发生另一次崩溃 glDeleteTexture(10314EF74) 子进程已退出

    我不知道发生了什么事

  • AMD PerfStudio 2-它似乎是最有前途的工具,成功地运行我的应用程序并显示所需的信息。但是,它似乎不支持调试GLSL,我无法单步通过着色器并查看局部变量等?它似乎只支持DirextX着色器

  • gDebugger-它在一个工具中工作得很好,类似于AMD PerfStudio,但它又不是一个调试器,不能单步执行着色器代码并查看任何局部变量

  • Printf-??堆栈溢出中有人说,使用printf时,如何在着色器中执行printf()

  • 将DirectX着色器转换为GLSL-由于DirectX着色器有更好的调试工具,并且有一些工具可以自动将hlsl转换为GLSL,因此它似乎是一种替代方法。我个人不喜欢这个解决方案,真希望我有另一个选择

  • 有人能建议您如何调试GLSL吗?您正在成功使用的工具是什么

    我正在运行:

    • 英伟达GFX 460v2
    • Visual Studio 2008和2010
    • 格洛
    • OpenGL 2.0

    您可以使用指定额外输出,然后检查(您的
    printf

    但是,当图元位于绘图区域之外时,这不会修复任何内容


    否则,这是通过纯粹的推理和心理调试进行的老式编程。

    经过几个小时的努力,我终于让我的NSight在我的机器上工作了,我在这里写下了这个过程,希望它能帮助有类似问题的人

  • 从下载NSight,它包括两个下载步骤,只需按照说明操作即可。我之前安装过Nsight Tegra,并且在我的visualstudio中获得了Nsight菜单,但是,当我启动图形调试器时,应用程序立即崩溃。我认为NSight Terga附带的NSight集成已经损坏,按照上面的链接重新安装NSight似乎可以解决问题

  • 运行NSight图形调试器时,我无法调试着色器代码,因为我的应用程序使用了一些不兼容的函数,例如

    glTexImage2D()
    glTexEnvf()

    还有更多。图形调试器告诉我,我可以调用名为Nav.Launcher.exe的工具来查找应用程序中不兼容函数的列表。但是,我在硬盘中找不到该工具

  • 然后,我决定使用gDEBugger再次运行我的应用程序,并打开断点->断开不推荐使用的函数。这使我可以知道我在代码中调用的所有不推荐使用的函数。删除所有不推荐使用的函数后,可以启用NSight graphics debugger的帧调试器功能,最终可以在Visual Studio中逐行遍历着色器代码


  • 希望这有帮助。

    你的意思是在Windows下?从一开始就正确地编写它们更容易。。。我的建议是,使用一些明显的视觉测试来检查计算是否按照他们应该修复NSight安装的方式进行。请确保在端口NSight-listens上没有任何其他侦听内容(我安装了一个名为freemake studio的东西,阻止了NSight)。更好的是,查看Nsight的日志文件,找出它崩溃的原因“屏幕上的一切都是黑色的”…您是否检查了着色器编译/链接状态/日志<代码>ARB_调试_输出?不幸的是,glslDevil已经坏了很多年了。如果您足够幸运,有一个足够老的代码库/驱动程序,它可能适合您,但由于它没有得到维护,所以很难找到完美的组合。许多总账工具都处于类似的情况,包括一些特定于供应商的工具。只要您不使用最新版本的Visual Studio(它仍然不支持VS 2013),NSight的维护就相当好。