OpenGL ES:如何用颜色着色纹理

bri*_*dir 5 textures opengl-es mask tint colors

我有alpha纹理.我想用一些颜色着色它,因此它将根据颜色的alpha值进行着色,但是总体不透明度将仅由纹理alpha定义.

这类似于多纹理,但使用颜色而不是第二纹理.怎么做?

(更新)我试图设置纹理合并器.颜色很好,但是有alpha的问题 - 它不会从纹理(如蒙版)中获取值.我的代码在这一刻:

glActiveTexture (GL_TEXTURE0); // do we need stage #1?
glTexEnvi(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_COMBINE);
glTexEnvi(GL_TEXTURE_ENV, GL_COMBINE_RGB, GL_INTERPOLATE);
glTexEnvfv(GL_TEXTURE_ENV, GL_TEXTURE_ENV_COLOR, (GLfloat*) &tintColor_);
glTexEnvi(GL_TEXTURE_ENV, GL_SRC0_RGB, GL_TEXTURE);
glTexEnvi(GL_TEXTURE_ENV, GL_SRC1_RGB, GL_CONSTANT);
glTexEnvi(GL_TEXTURE_ENV, GL_SRC2_RGB, GL_CONSTANT);
glTexEnvi(GL_TEXTURE_ENV, GL_OPERAND0_RGB, GL_SRC_COLOR);
glTexEnvi(GL_TEXTURE_ENV, GL_OPERAND1_RGB, GL_SRC_COLOR);
glTexEnvi(GL_TEXTURE_ENV, GL_OPERAND2_RGB, GL_ONE_MINUS_SRC_ALPHA);
// this doesn't work for alpha:
glTexEnvi(GL_TEXTURE_ENV, GL_COMBINE_ALPHA, GL_REPLACE);
glTexEnvi(GL_TEXTURE_ENV, GL_SRC0_ALPHA, GL_TEXTURE);
glTexEnvi(GL_TEXTURE_ENV, GL_OPERAND0_ALPHA, GL_SRC_ALPHA);
Run Code Online (Sandbox Code Playgroud)

截图:

没有着色:

在此输入图像描述

RGBA =(0,0.5,1,0.5)的色调:

在此输入图像描述

小智 0

您是否使用 glEnable(GL_BLEND) 尝试过上面的代码?