我試圖在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