我有一个简单的 GLSL 1.2 着色器,可以累积五个纹理的值。
着色器编译得很好。
我的问题是,当激活此着色器渲染一个简单的三角形时,不会绘制任何内容,glGetError()
将返回无效操作。
然而,如果我只使用三个纹理,一切都运行得很好。如果我在渲染三角形之前激活另一个着色器,那么一切都运行良好。
似乎有一些关于纹理和着色器的东西,我似乎不知道,为什么我会因为运行着色器而得到无效操作的任何想法?
更新
答案 0 :(得分:1)
可以在着色器中使用有限数量的纹理。
该限制特定于顶点阶段,片段阶段和整体组合限制。
最有可能的是,你超过了这个限制。限制是系统相关的,实际上你必须通过使用glGet例程和以下参数来查询这些限制:
如果多个顶点或片段阶段访问相同的纹理单元,则每个访问将分别计入GL_MAX_COMBINED_TEXTURE_IMAGE_UNITS。