2012-04-05 3 views
1

iPhone 용 OpenGL ES 1.1에 초보자입니다. 오늘 검은 배경에 png 텍스처를 그려 보았습니다 (텍스처에는 알파 채널이 포함됨). 결과는 소스 png 파일과 다릅니다.iPhone - OpenGL ES 1.1 - 알파 블렌드가 틀린 색을 만듭니다.

아이폰 & 시뮬레이터의 결과 :

enter image description here

가 빛을 끄고

가 :

enter image description here

그것은해야한다의 (밝은 & 더 흐림) :

enter image description here

소스 텍스처 파일 :

//Setup: 
glEnable(GL_ALPHA_TEST); 
glEnable(GL_BLEND); 
glAlphaFunc(GL_GREATER,0.01); 
glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA); 
glEnable(GL_LIGHTING); 
glEnable(GL_LIGHT0); 
static const GLfloat light0Ambient[] = {1.0, 1.0, 1.0, 1.0}; 
static const GLfloat light0Diffuse[] = {1.0, 1.0, 1.0, 1.0}; 
static const GLfloat light0Position[] = {0.0, 0.0, 10.0}; 
glLightfv(GL_LIGHT0, GL_AMBIENT, (const GLfloat *)light0Ambient); 
glLightfv(GL_LIGHT0, GL_DIFFUSE, (const GLfloat *)light0Diffuse); 
glLightfv(GL_LIGHT0, GL_POSITION, (const GLfloat *)light0Position); 
glEnable(GL_TEXTURE_2D); 
glEnableClientState(GL_TEXTURE_COORD_ARRAY); 
glEnableClientState(GL_NORMAL_ARRAY); 

그리기 코드 : 문제가 만드는 무엇

glBindTexture(GL_TEXTURE_2D, OYTextID); 
glVertexPointer(3, GL_FLOAT, 0, GUI_Vertices); 
glNormalPointer(GL_FLOAT, 0, GUI_Normals); 
glTexCoordPointer(2, GL_FLOAT, 0, GUI_TexCoords); 
glDrawArrays(GL_TRIANGLE_STRIP, 0, 4); 

색상이 잘못

enter image description here

이 내가 사용하는 소스 코드 ??

감사합니다. 도움을 주셔서 감사합니다. 최고 감사합니다 & 영어로 죄송합니다.

+0

조명을 끈 상태에서 그림을 그리려고 했습니까? 차이가 있습니까? – Mark

+0

glBlendFunc는 정상으로 보입니다 ... Mark가 제안한대로 불을 끄십시오. – Beppe

+0

Beppe & Mark에게 감사드립니다. 빛을 끄려 고 시도했지만 문제가 해결되지 않았습니다! 업데이트 이미지를 보시기 바랍니다 :( –

답변

5

PNG 파일에 미리 곱셈 된 알파가있는 것 같습니다. 이 경우에 설정해야합니다

glBlendFunc(GL_ONE, GL_ONE_MINUS_SRC_ALPHA); // GL_ONE instead of GL_SRC_ALPHA 
+0

당신은 멋진 분이 십니다! 대단히 감사합니다! –

관련 문제