如何在不受glColor影响的情况下渲染纹理?

Som*_*ent 2 opengl-es opengl-es-1.1

我的纹理本身有一个透明的背景,我想按原样呈现它.

glEnable(GL_TEXTURE_2D);
glEnable(GL_BLEND);
glEnableClientState(GL_VERTEX_ARRAY);
glEnableClientState(GL_TEXTURE_COORD_ARRAY);

glPushMatrix();

glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);

glTranslatef(x, y, 0.0f);
glColor4f(1.0f, 1.0f, 1.0f, 1.0f);
glVertexPointer(2, GL_FLOAT, 0, undoVertCoord);
glTexCoordPointer(2, GL_FLOAT, 0, undoTexCoord);
glBindTexture(GL_TEXTURE_2D, texUndo);
glDrawArrays(GL_TRIANGLE_STRIP, 0, 4);
Run Code Online (Sandbox Code Playgroud)

问题在于glColor4f.该功能似乎覆盖了纹理的透明度,使部件在透明时变得不透明.但是如果我用alpha值0给glColor4f喂食,那么整个纹理就会变得透明.

那么,你能渲染一个忽略glColor4f的纹理,使纹理按原样呈现吗?或者以不影响alpha值的方式?

Mic*_*ael 8

你的GL_TEXTURE_ENV_MODE设定是什么?尝试将其设置为GL_REPLACE.

glTexEnvi(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_REPLACE);
Run Code Online (Sandbox Code Playgroud)