2014-01-17 104 views
3

有没有办法可以调试glsl着色器?包括像断点和数据跟踪有没有一种方法可以调试GLSL着色器?

我看到了一些简单的人,让我看看着色器让我的荫程序,但没有什么我可以把破发点英寸

我需要检查矩阵的值,只是抛出一个glFragColor将不起作用,因为有太多的值要比较和检查。

有没有一个简单的方法来做到这一点?除了我只写下我认为我可能拥有的价值,并在其他地方做我的数学。

当我试图了解所有的OpenGL并知道如何浏览DirectX时,这真的很烦人。我可以看到为什么有些人在资源难以找到时会被OpenGL吓跑。

+0

您定位的是哪个版本的OpenGL?忘记正常着色器中的“断点”,GPU与CPU异步运行,并且没有/暴露必要的中断逻辑来实现断点,而不使用某种特定于供应商的工具。此外,着色器并行(大量)运行。您可以强制着色器在GL4中阻塞内存障碍,并且您可能能够使用Shader存储缓冲区/图像加载/存储/转换反馈/等调查输出。但是,所有这些都需要特定版本的GL和一般对GLSL有透彻的理解。 –

+0

即时使用3.3及以上版本 –

+0

转换反馈可能是您最好的选择。曾经有一个工具'glslDevil'提供了很多你所描述的功能(除了运行时断点),它是围绕变换反馈建立的。该工具仍然存在,但尚未更新,很少适用于现代GL实现/着色器。变换反馈可以让你从3.3中的顶点/几何阶段获得输出,如你所知,对于片段着色器调试,你可能将不得不依赖片段数据输出。 –

回答

0

根据NVIDIA Nsight的开发更新,他们最近添加了GLSL调试功能(https://developer.nvidia.com/nsight-visual-studio-edition-3_0-new-features)。我会先看看那里。此外glslDevil(http://www.vis.uni-stuttgart.de/glsldevil/index.html)看起来不错。我自己也没有尝试过这两种方案,所以不能提供关于质量的第一手经验。 NVIDIA对CUDA调试的支持给我留下了深刻的印象,所以有很高的期望。

+0

glsl恶魔不会支持任何最近的发布是loooog时间前。 –

相关问题