我正在开发iOS上的OpenGL ES 2项目来学习OpenGL ES 2.在线我发现了一个用于链接和编译着色器的Objective-C实现,并且我使用这个实现作为我自己的模板。不幸的是,我错误地键入上传我的纹理数据为glUniform1f而不是glUniform1i。看起来像这样...glUniform1f vs glUniform1i混淆
glActiveTexture(GL_TEXTURE1);
glBindTexture(GL_TEXTURE_2D, self.texture);
glUniform1f(_texUniform, 1); // this line should be glUniform1i
我的项目有自己的纹理多个对象。这个错字导致所有对象上只显示最后绘制的对象的纹理。我怀疑我的纹理ID或类似的东西有问题,因此在每次绘制调用时注销了纹理ID等,并且找不到任何错误。
这是一个很难找到的错误,我想了解这个错误是怎么回事。我的问题是glUniform1f vs glUniform1i会导致这种行为?我有点惊讶,着色器不仅没有链接和编译,也没有绘制任何纹理。
谢谢 - 现在有道理。 – dloranz