我的纹理本身有一个透明的背景,我想按原样渲染它。
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);
问题出在glColor4f
. 该功能似乎覆盖了纹理的透明度,使应该透明的部分变得不透明。但是如果我输入 alpha 值为 0 的 glColor4f,整个纹理就会变得透明。
那么,您可以渲染忽略glColor4f的纹理,按原样渲染纹理吗?或者以不影响阿尔法值的方式?