我有一个片段着色器,它迭代一些输入数据和我得到的旧硬件:
错误 C6013:只有 texcoords 的数组可以在此配置文件中被索引,并且只能使用循环索引变量
谷歌搜索我看到了很多东西,比如“XX 之前的硬件不支持片段着色器上的索引”。
我想知道这种行为是否在 GLSL 版本中标准化,例如“glsl pior to XX doesn't support indexing on fragment shader”之类的东西。如果是这样,哪个版本开始支持它。
您的确切硬件是什么?
旧的 ATI 卡(X1600 以下)及其驱动程序存在此类问题。可以肯定的是,并非英特尔最新的显卡也受此影响。
“您对如何检测我的硬件是否能够在片段着色器中进行索引有任何建议吗?”
唯一可靠但不那么漂亮的方法是获取渲染器信息:
glGetString(GL_RENDERER)
并检查此渲染器是否出现在不受支持的列表中。
该特定错误来自 nv4x(GeForce 6/7 卡)的 Nvidia 编译器,是硬件的限制。任何解决方法都需要完全禁用硬件并使用纯软件渲染。
所有版本的 GLSL 都支持该语言的索引——此错误属于超出硬件资源限制的全部内容。