iPhone OpenGL ES 纹理单元

标签 iphone opengl-es textures

我刚开始为 iPhone 编写 OpenGL ES。我正在尝试渲染 yuv 纹理,但对纹理单元的概念感到非常困惑。

如果我用不同的组合更改 glUniform1i 的第二个参数,则生成的图像会有所不同。我的问题是这个 0 或 1 个纹理单元是如何配置的?正确的使用方法是什么?

编辑: 愚蠢的我...忘了叫这个:

glTexParameteri(GL_TEXTURE_2D, GL_MIN_FILTER, GL_NEAREST);
glTexParameteri(GL_TEXTURE_2D, GL_MAG_FILTER, GL_NEAREST);

最佳答案

您可以使用如下代码将纹理绑定(bind)到可用的纹理单元:

glActiveTexture(GL_TEXTURE0);
glBindTexture(GL_TEXTURE_2D, texture1);

glActiveTexture(GL_TEXTURE1);
glBindTexture(GL_TEXTURE_2D, texture2);

当然,这假设您已正确配置 texture1texture2

当需要将纹理绑定(bind)到着色器时,您可以使用如下代码指定特定纹理绑定(bind)到哪个纹理单元:

glUniform1i(texture1Index, 0);
glUniform1i(texture2Index, 1);

其中 texture1Indextexture2Index 是适合您的着色器的相应制服的索引。 0 和 1 对应于我们之前绑定(bind)纹理的纹理单元。

关于iPhone OpenGL ES 纹理单元,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8366033/

相关文章:

ios - 我可以从现有应用程序创建新的iOS应用程序吗?

iphone - 如何突出显示字符串的NSRange

iOS - 使用 openGL ES 仅缩放显示的一部分

java - 如何使用 .jar 中打包的 .png 数据作为 LWJGL 中的纹理?

python - Material 和纹理更改脚本(之前询问过)

c++ - Direct3d 绘制 2d Sprite 。缩放问题

iphone - self.property 和 property 的用法有什么区别

iphone - 如何在 UIWebView 中添加弹出按钮

c++ - 使用 OpenGL ES 进行条件混合

ios - OpenGL 减法混合