iphone - 在 iPhone 上使用多重纹理添加贴花

标签 iphone opengl-es

我正在尝试将一个图像叠加在另一个图像之上,形成一个简单的四边形。我将底部图像设置为纹理单元 0,然后将顶部图像(具有变量 alpha)设置为纹理单元 1。单元 2 具有模式 GL_DECAL,这意味着当alpha 为 0,当 alpha 为 1 时,顶部纹理应该显示。但是,只有顶部纹理显示,底部纹理根本不显示。它只是底部纹理应该显示出来的白色。

glGetError() 不报告任何问题。任何帮助表示赞赏。谢谢!

glVertexPointer(3, GL_FLOAT, 0, boxVertices);
glEnableClientState(GL_VERTEX_ARRAY);

glClientActiveTexture(GL_TEXTURE0);
glEnableClientState(GL_TEXTURE_COORD_ARRAY);
glTexCoordPointer(2, GL_FLOAT, 0, boxTextureCoords);
glClientActiveTexture(GL_TEXTURE1);
glEnableClientState(GL_TEXTURE_COORD_ARRAY);
glTexCoordPointer(2, GL_FLOAT, 0, boxTextureCoords);

glClientActiveTexture(GL_TEXTURE0);
glEnable(GL_TEXTURE_2D);
glClientActiveTexture(GL_TEXTURE1);
glEnable(GL_TEXTURE_2D);

glClientActiveTexture(GL_TEXTURE0);
glBindTexture(GL_TEXTURE_2D, one.texture);
glTexEnvi(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_MODULATE);

glClientActiveTexture(GL_TEXTURE1);
glBindTexture(GL_TEXTURE_2D, two.texture);
glTexEnvi(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_DECAL);

glDrawArrays(GL_TRIANGLE_FAN, 0, 4);

最佳答案

由于您使用的是顶点数组,因此需要使用 glClientActiveTexture设置纹理坐标时,而不是 glActiveTexture

关于iphone - 在 iPhone 上使用多重纹理添加贴花,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1912727/

相关文章:

iPhone - HTML 5's "缓存 list “对许多网络应用程序来说很常见?

iphone - 如何从功能菜单中关闭@synthesize 指令

ios - 如何使用 OpenGL ES 2.0 将巨大的数组传递给 iOS 上的着色器?

java - 在 glOrtho View 中绘制一条线,为什么它使用默认投影?

android - 纹理仅在某些设备上显示

iphone - 何时使用 Core Data 的 NSMainQueueConcurrencyType?

iphone - 核心数据错误 : _Unwind_Resume called from function _PFFaultHandlerLookupRow in image CoreData

ios - swift中performSelector的替代品是什么?

java - Android : OpenGL, TextView

c - OpenGL ES 2.0 纹理显示为黑色