2012-04-08 3 views
0

알파를 0.5로 변경하려는 OpenGL ES 장면 (버전 1.1)에 질감이있는 객체가 있습니다. 모델의 투명성이 변경되지OpenGL ES 객체의 알파 값 변경 - GL_BLEND - iPhone

glEnableClientState(GL_VERTEX_ARRAY); 
glEnableClientState(GL_NORMAL_ARRAY); 
glEnableClientState(GL_TEXTURE_COORD_ARRAY); 

glTexEnvi(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_MODULATE); 
glEnable(GL_BLEND); 
glBlendFunc(GL_ONE, GL_ONE_MINUS_SRC_ALPHA); 
glColor4f(1.0, 1.0, 1.0, 0.5); 

glVertexPointer(3, GL_FLOAT, 0, vertexes); 
glNormalPointer(GL_FLOAT, 0, normals); 
glTexCoordPointer(2, GL_FLOAT, 0, textures); 

GLfloat ambientAndDiffuse[] = kAmbience; 
glMaterialfv(GL_FRONT_AND_BACK, GL_AMBIENT_AND_DIFFUSE, ambientAndDiffuse); 
GLfloat specular[] = kSpecular; 
glMaterialfv(GL_FRONT_AND_BACK, GL_SPECULAR, specular); 
glMaterialf(GL_FRONT_AND_BACK, GL_SHININESS, kShininess); 
GLfloat emission[] = kEmission; 
glMaterialfv(GL_FRONT_AND_BACK, GL_EMISSION, emission); 

glDrawElements(GL_TRIANGLES, vertexCount, GL_UNSIGNED_SHORT, indices); 

glDisableClientState(GL_VERTEX_ARRAY); 
glDisableClientState(GL_NORMAL_ARRAY); 
glDisableClientState(GL_TEXTURE_COORD_ARRAY); 
glDisable(GL_BLEND); 

문제가 있음 :

다음 코드를하려합니다. 이 모델은 그러나 알파는 여전히 1

편집

내 텍스처 JPG를하다하다, 제대로 화면에 표시됩니다. PNG로 저장해야합니까?

아무도 내가 이것을 고칠 수있는 방법을 발견 할 수 있습니까?

감사합니다.

답변

1

아, 내가 해결했다고 생각합니다. 조명을 끄고 작동해야합니다.

glDisable (GL_LIGHTING);

0

변조하기 위해 텍스처 환경 변수를 설정 했습니까? 이렇게하면 :

glTexEnvi (GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_MODULATE); 

이렇게하면 텍스처의 색상에 따라 오브젝트의 색상이 곱해진다. 또한, 현재 색상을 설정하는 대신 glDrawElements()으로 GL_COLOR_ARRY를 사용해야하는지 여부를 기억하지 못합니다.

+0

감사합니다. 위의 코드에서 변경된 내용을 추가했지만 아무 것도 화면에 표시되지 않습니다. – GuybrushThreepwood

+0

또한 glTexEnvi의 기본값은 GL_MODULATE이므로 다른 곳에서 변경하지 않으면이 값을 설정할 필요가 없습니다. – GuybrushThreepwood