ios - OpenGL Multitexture-第二纹理操作无效

标签 ios opengl textures

我正在执行多纹理操作,将一定量的灰色混合到纹理中,然后进一步用另一种颜色着色该纹理。请注意,原始纹理已预先乘以Alpha。

这是代码:

glActiveTexture(GL_TEXTURE0);
glBindTexture(GL_TEXTURE_2D, [texture_ name]);
GLfloat g[4] = { grey, grey, grey, grey };
glTexEnvfv(GL_TEXTURE_ENV, GL_TEXTURE_ENV_COLOR, g);
glTexEnvi(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_COMBINE);
glTexEnvi(GL_TEXTURE_ENV, GL_COMBINE_RGB,      GL_INTERPOLATE);
glTexEnvi(GL_TEXTURE_ENV, GL_SRC0_RGB,         GL_TEXTURE);
glTexEnvi(GL_TEXTURE_ENV, GL_OPERAND0_RGB,     GL_SRC_COLOR);
glTexEnvi(GL_TEXTURE_ENV, GL_SRC1_RGB,         GL_TEXTURE);
glTexEnvi(GL_TEXTURE_ENV, GL_OPERAND1_RGB,     GL_SRC_ALPHA);
glTexEnvi(GL_TEXTURE_ENV, GL_SRC2_RGB,         GL_CONSTANT);
glTexEnvi(GL_TEXTURE_ENV, GL_OPERAND2_RGB,     GL_SRC_COLOR);
glTexEnvi(GL_TEXTURE_ENV, GL_COMBINE_ALPHA,    GL_REPLACE);
glTexEnvi(GL_TEXTURE_ENV, GL_SRC0_ALPHA,       GL_TEXTURE);

glActiveTexture(GL_TEXTURE1);
glEnable(GL_TEXTURE_2D);
glBindTexture(GL_TEXTURE_2D, gTexID1);
GLfloat col[4] = { (float)color_.r/255.0, (float)color_.g/255.0, (float)color_.b/255.0, 1.0 };
glTexEnvfv(GL_TEXTURE_ENV, GL_TEXTURE_ENV_COLOR, col);
glTexEnvi(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_COMBINE);
glTexEnvi(GL_TEXTURE_ENV, GL_COMBINE_RGB,      GL_MODULATE);
glTexEnvi(GL_TEXTURE_ENV, GL_SRC0_RGB,         GL_PREVIOUS);
glTexEnvi(GL_TEXTURE_ENV, GL_OPERAND0_RGB,     GL_SRC_COLOR);
glTexEnvi(GL_TEXTURE_ENV, GL_SRC1_RGB,         GL_CONSTANT);
glTexEnvi(GL_TEXTURE_ENV, GL_OPERAND1_RGB,     GL_SRC_COLOR);
glTexEnvi(GL_TEXTURE_ENV, GL_COMBINE_ALPHA,    GL_REPLACE);
glTexEnvi(GL_TEXTURE_ENV, GL_SRC0_ALPHA,       GL_PREVIOUS);
glTexEnvi(GL_TEXTURE_ENV, GL_OPERAND0_ALPHA,   GL_SRC_ALPHA);

glDrawArrays(GL_TRIANGLE_STRIP, 0, 4);

第一部分工作正常,但是第二部分没有任何作用。
纹理名称gTexID1确实是虚拟的,因为我使用恒定的颜色来着色纹理,所以我只需通过调用glGenTextures(1,&gTexID1)来创建它。
我当然已经检查了颜色的值,它不是白色。

我无耻地从here复制了大部分代码。

关于为何失败的任何想法?

最佳答案

即使它是虚拟纹理,我相信仅仅调用glGenTextures还是不够的。您还必须调用glTexImage2D为其提供大小。还要检查是否从glGetError获得任何错误代码。

关于ios - OpenGL Multitexture-第二纹理操作无效,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9905240/

相关文章:

javascript - React-native pubnub WebRTC 视频聊天

Java lwjgl 和 slick 不显示我的纹理

c++ - 尝试渲染高度贴图时 OpenGL 在 glDrawElements 上崩溃

ios - 拉伸(stretch) UIButton 的背景图像

ios - iPhone App 中的应用内评论功能

ios - 为什么在 Collection View 单元格中以编程方式创建的按钮需要是惰性变量?

java - OpenGL - 不需要的 z 轴相机旋转

java - Wavefront .obj .Mtl 结构

iOS 纹理占用 33% 额外内存

ios - 如何在swift中播放电影