c++ - 打破 GLSL 着色器指令限制的错误消息是什么?

标签 c++ opengl glsl

我们是一个小型开发团队,使用一些 GLSL,这些 GLSL 可能对于旧图形卡来说太大而无法编译。当发生这种情况时,我们希望根据错误类型向用户显示一条合理的错误消息(而不是仅仅转储信息日志或输出一般的“此着色器不工作”类型的消息)。

问题是,ATI 和 nVidia 对这些错误消息有不同的约定,我发现确定着色器有什么类型的错误的唯一方法是解析 glGetShaderInfoLog 生成的错误字符串。

鉴于此,某处是否有列表,或者有人知道 ATI 和 nVidia 卡的错误输出是什么样的吗?或者是否有更好的方法来检测何时超出指令限制?

最佳答案

即使您现在知道错误消息是什么样子,nVidia 和 ATI 也没有义务在其驱动程序的下一版本中保持它们相同。除了调试目的,它们基本上不能用于任何事情。

我会查看供应商扩展是否能够为您提供更具体的诊断信息。

关于c++ - 打破 GLSL 着色器指令限制的错误消息是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1272120/

相关文章:

OpenGL - 不同着色器阶段的显式统一位置

c++ - 如何检查回文列表

c++ - cpp unordered_set 只使用比较器而不是散列

python - 寻找与 actionscript 的 BitmapData.draw() 并行的函数,但在 OpenGL 中

c++ - 如果我们有 glBindBuffer, "glGenBuffers"真的很重要吗?

C++ OpenGL 段错误(核心转储)运行时错误

c++ - 编译 Havok 演示

c++ - 是否有嵌套枚举类的接口(interface)机制?

c++ - 绘制顺序会影响对象的深度位置吗? (包括图像)

opengl-es - 在不同的程序中使用相同的顶点着色器时,统一位置是否保持不变