从GLSL着色器

时间:2017-10-11 06:21:58

标签: opengl glsl

我想调试一个GLSL着色器。 我需要的是发送字符串信息。 我试过FBO,但这不是一个干净的方式

有没有办法将日志发送到主程序?

2 个答案:

答案 0 :(得分:1)

如果您想拥有某种自己的错误代码,可以执行以下操作。

您可以使用转换反馈。 转换反馈不能存储字符串。它通常用于存储每个顶点或每个基本属性。您可以定义一些错误代码。例如

在应用程序中

#define VERTICES_TRANSFORMED_WRONGLY 1

VS着色器中的

#define VERTICES_TRANSFORMED_WRONGLY 1 

void main(void)
{
  if(condition for error met)
    write error code(VERTICES_TRANSFORMED_WRONGLY) to Transform feedback.
}

在应用程序中

如果它有任何错误代码你知道出了什么问题,请阅读此转换反馈。

您可以在每个着色器阶段后附加变换反馈。 [BDL建议编辑]: 片段着色器后您无法附加变换反馈,但您可以使用FBO执行与片段着色器阶段类似的操作。

注意:我仍然建议您使用已经被称为Renderdoc,glDebugger,Nsight的工具。

答案 1 :(得分:0)

不,无法将着色器中的字符串发送到主程序。

您通常要为特定情况输出特定颜色。根据您的硬件,CodeXL或Nvidia NSight可能也会提供帮助。