我想调试一个GLSL着色器。 我需要的是发送字符串信息。 我试过FBO,但这不是一个干净的方式
有没有办法将日志发送到主程序?
答案 0 :(得分:1)
如果您想拥有某种自己的错误代码,可以执行以下操作。
您可以使用转换反馈。 转换反馈不能存储字符串。它通常用于存储每个顶点或每个基本属性。您可以定义一些错误代码。例如
在应用程序中
#define VERTICES_TRANSFORMED_WRONGLY 1
#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可能也会提供帮助。