2011-09-23 166 views
1

我很紧张地问这个问题,因为我看过几个帖子暗指答案,但没有一个适合我。如果这是重复的道歉。iPhone openGL ES 2.0纹理 - 为片段着色器设置多个纹理

我想在iPhone 4(OS 4.3)的片段着色器中访问多个纹理(此刻为2)。我的代码正确设置了第一个纹理,着色器可以在我的模型上读取和使用它。一旦我尝试添加第二个纹理,它会覆盖第一个纹理,而不是给我两个纹理。

有没有一个很好的教程,将多个纹理传递给ES2.0中的像素着色器?我认为我不适当地覆盖相同的纹理槽或类似的东西。

我的代码很混乱和冗长。其中很多是在线样本。稍后清理。 谢谢!

链接: My code excerpts pertaining to texture loading and shader usage

回答

2

这一个很简单。交换“//绑定到纹理”和“//获取统一的位置”。块,它应该工作。问题是你正在设置一些制服的值,而不知道它们的位置(你在紧接着的步骤中获得的)。

所以发生的效果不是“一个纹理被覆盖”,但是这两个采样器都包含(默认值)0,所以两者都读取相同的纹理。

希望这会有所帮助。

+1

对我来说,第一次glUniform调用之前缺少glUseProgram(统一的位置看起来没问题)。 – melfar