我试图在OpenGL上放置一个纹理(带有alpha)的另一个纹理。我这样做没有任何问题,但它不是我想要的:我的最近的图片的颜色深受背景图片(最好的纹理)导致呈现橙色,尽管红色。保持原来的颜色
任何人都知道一种混合(或摆脱阿尔法),将解决这个问题的方式?
融合初始化:
glEnable(GL_BLEND);
glBlendFunc(GL_SRC_ALPHA, GL_ONE);
绘制场景:
glClear(GL_COLOR_BUFFER_BIT);
glLoadIdentity();
//furthest image (background)
glBindTexture(GL_TEXTURE_2D, texture[1]);
glBegin(GL_QUADS);
glTexCoord2f(0, 0); glVertex2f(0, 0);
glTexCoord2f(1, 0); glVertex2f(500, 0);
glTexCoord2f(1, 1); glVertex2f(500, 500);
glTexCoord2f(0, 1); glVertex2f(0, 500);
glEnd();
//nearest image (appears orange, should be red)
glBindTexture(GL_TEXTURE_2D, texture[0]);
glBegin(GL_QUADS);
glTexCoord2f(0, 0); glVertex2f(100, 100);
glTexCoord2f(1, 0); glVertex2f(300, 100);
glTexCoord2f(1, 1); glVertex2f(300, 300);
glTexCoord2f(0, 1); glVertex2f(100, 300);
glEnd();
glutSwapBuffers();
编辑。 这里有一个形象描绘它的外观:
下面是怎样看的图像:
我看不到你在混合什么颜色,你想要达到什么以及你实际达到了什么。如果最近的图像是透明的,为什么它不会受其背景影响?橙色有什么问题? – Kos 2012-07-22 15:38:54
@Kos嗯,我有一个绿色的背景,我有一个红色的纹理,其中使用alpha的地方。在那些地方我想提到背景(草)。这就像2D游戏,玩家在表面上行走。相反,我的背景颜色影响“玩家”,因此我的红色纹理变成橙色(红色+绿色)。 – Robin92 2012-07-22 15:49:13