我需要在 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);
背景是没有 Alpha 通道的 tga。图像是带有 alpha 通道的 tga。
这会在背景上渲染带有 alpha 的图像,但太亮了。
我读到它应该很简单:
glBlendFunc(GL_ONE, GL_ONE);
但是尽管有 alpha 通道,图像仍被渲染为白色方块。
显然我做错了什么。