2012-07-25 2 views
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를 무시한 질감을 렌더링하여 텍스처를 그대로 렌더링 할 수 있습니까? 또는 알파 값에 영향을 미치지 않는 방식으로?

+0

glColor4f는 텍스처의 색을 '덮어 쓰지 않아야'합니다. 기본적으로이 값을 변조하므로 glColor4f가 (1,1,1,1)이면 텍스처 색상을 정확하게 재현합니다. 투명도가 깨지면 glColor와 관련없는 투명도가 잘못되었습니다. 알파 채널이 텍스처에 맞게 올바르게 생성되는지 확신합니까? – Tim

답변

8

귀하의 GL_TEXTURE_ENV_MODE은 (으)로 설정되어 있습니까? GL_REPLACE으로 설정하십시오.

glTexEnvi(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_REPLACE); 
관련 문제