2
我的紋理本身有一個透明的背景,我想按原樣渲染它。如何渲染紋理而不受glColor的影響?
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
。該功能似乎覆蓋了紋理的透明度,使部分在透明時不透明。但是,如果我給alpha值爲0的glColor4f,整個紋理變得透明。你可以渲染一個忽略glColor4f的紋理,渲染紋理嗎?或者以不影響alpha值的方式?
glColor4f不應該'覆蓋'紋理的顏色。默認情況下,進行調製,這意味着用的glColor4f(1,1,1,1),你將重現紋理色彩準確。如果透明度破壞,那麼與glColor無關的透明度有其他問題。你確定alpha通道正在爲你的紋理正確創建嗎? – Tim 2012-07-25 20:59:53