OpenGLで背景の上に画像をレンダリングする必要があり、Photoshopの「カラー覆い焼き」と同じ結果を得ようとしていますが、それができません。
今私はやっています:
glEnable(GL_BLEND);
glBlendFunc(GL_SRC_ALPHA, GL_ONE);
// background
glEnable(GL_TEXTURE_2D);
glBindTexture(GL_TEXTURE_2D, background);
glBegin(GL_TRIANGLE_STRIP);
glTexCoord2f(0.0, 0.0);
...
glEnd();
glDisable(GL_TEXTURE_2D);
// image
glEnable(GL_TEXTURE_2D);
glBindTexture(GL_TEXTURE_2D, image);
glBegin(GL_TRIANGLE_STRIP);
glTexCoord2f(0.0, 0.0);
...
glEnd();
glDisable(GL_TEXTURE_2D);
背景はアルファチャネルのないtgaです。画像はアルファチャンネル付きのtgaです。
これにより、背景にアルファが付いた画像がレンダリングされますが、明るすぎます。
私はそれが次のように簡単であるべきだと読みました:
glBlendFunc(GL_ONE, GL_ONE);
ただし、アルファチャネルがあるにもかかわらず、画像は白い正方形としてレンダリングされます。
明らかに私は何か間違ったことをしている。