2012-02-26 3 views
-1

Android 프로젝트를 C++로 옮기기로 결정했는데 문제가 있습니다. Java 코드에서 알파 값없이 텍스처를로드하고 있었고 검은 색은 실제로 내 투명 색 이었지만 지금은이를 수행 할 수 없습니다. 검은 색은 검은 색으로 투명하지 않습니다.알파 (투명도)로 검은 색 Openplayer

나는이 같은 질감을로드 오전 :

GLuint texture; 
glGenTextures(1, &texture); 
glBindTexture(GL_TEXTURE_2D, texture); 

glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST); 
glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR); 

glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_CLAMP_TO_EDGE); 
glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_CLAMP_TO_EDGE); 

glTexEnvf(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE,GL_MODULATE); 

glTexImage2D(GL_TEXTURE_2D, 0, GL_RGB, width, height, 0, GL_RGB, GL_UNSIGNED_BYTE, (GLvoid*) image_data); 
+0

'glTexEnvf (GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_MODULATE);'이것은 텍스처 객체 상태가 아닙니다. 텍스처와 함께 저장되지 않으며 거의 ​​확실히 호출되어서는 안됩니다. –

+0

당신은 내 잘못이지만, 그것을 제거 dosent 내 문제를 해결 – SteveL

+0

그 이유는 대답이 아니라 대답이야. 그냥 FYI. –

답변

2

GL_RGB은 세 가지 구성 요소가 내부 형식을. 알파가 없습니다. 따라서 알파에 액세스하려고 시도하고 존재하지 않는 알파로 무언가를하면 OpenGL이 대신 알파를 채 웁니다. 1.0으로, 아마도 당신이 원하는 것이 아닙니다.

알파를 원하면 알파를 제공해야합니다. OpenGL은 그것을 당신에게 실재시키지 않을 것이고, 검은 색은 "투명하다"는 것을 가정하지 않을 것입니다.

또는 블렌딩 또는 알파 테스트를 사용하지 않았습니다.

+0

당신은 GL_RGB에 관해서는 GL_RGBA로 변경했고 glBlendFunc는 glBlendFunc (GL_ONE, GL_ONE)로 변경했습니다. 이제 검은 색이 transperant로 나옵니다. 도와 주셔서 감사합니다. – SteveL