5

只是有一个关于 iOS 5.0 框架中的 GLKit 的快速问题。

如果您使用 GLKTextureLoader,它是否只是在当前活动的纹理单元中加载纹理?我查看了示例,但我没有看到您必须说变量 x 中的 GLKTextureInfo 绑定到 GL_TEXTURE0。

我见过人们将 glActiveTexture 与 GLKTextureLoader 结合使用的示例,但看起来纹理只是自动锁定到活动纹理单元中。一旦我加载它,我只需要传递纹理坐标?

提前致谢。

4

2 回答 2

4

在 GLKTextureLoader 加载您的 GLKTextureInfo 对象后,您就可以自己绑定纹理了。因此,当 GLKLTextureLoader 完成加载时,您加载的纹理不会绑定到任何纹理单元。当你准备好画画时,你打电话:

glActiveTexture(GL_TEXTURE0); // to specify texture unit 0
glBindTexture(textureInfo.target, textureInfo.name);

我强烈推荐《Learning OpenGL ES for iOS: A Hands-On Guide to Modern 3D Graphics Programming》一书,因为它很好地展示了 GLKit 类中发生的事情。您还可以参考我编写的使用 GLKTextureLoader 的演示代码:https ://github.com/joekim/MobileMeetup/tree/master/GLKitDemo

于 2012-10-20T01:57:00.103 回答
2

是的,有一些自动发生的事情。加载第二个纹理后,该纹理将绑定到 GL_TEXTURE0 但如果您希望它在 GL_TEXTURE1 中:

glActiveTexture(GL_TEXTURE1);
glBindTexture(someTexture.target, someTexture.name);
glUniform1i(u_someSampler, 1); // u_someSampler retrieved from prev call to glGetUniformLocation
于 2014-03-08T09:48:14.193 回答