2

私のテクスチャ自体は透明な背景を持っているので、そのままレンダリングしたいと思います。

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. その関数は、テクスチャの透明度を上書きするようで、透明であるべき部分を不透明にします。しかし、アルファ値 0 で glColor4f をフィードすると、テクスチャ全体が透明になります。

SO、テクスチャをそのままレンダリングして、glColor4f を無視するテクスチャをレンダリングできますか? または、アルファ値に影響を与えない方法で?

4

1 に答える 1

8

あなたのGL_TEXTURE_ENV_MODEセットは何ですか?に設定してみてくださいGL_REPLACE

glTexEnvi(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_REPLACE);
于 2012-07-25T19:12:30.147 に答える