OpenGl es에서는 투명한 픽셀이있는 텍스처를 어떻게로드합니까?
-
03-07-2019 - |
문제
그런 다음 올바르게 표시 되나요? 예를 들어, 백그라운드에서 다른 질감을 볼 수있는 반면 사각형에 둥근 공이있는 것입니다.
편집 : 현재 텍스처를로드하면 소스 이미지의 투명 픽셀이 검은 색으로 표시됩니다.
해결책
iPhone 및 N95의 경우 이것은 다음과 같습니다.
원시 데이터에서 텍스처를로드하는 경우 내부 및 소스 형식을 GL_RGBA로 설정하십시오.
glTexImage2D(GL_TEXTURE_2D, 0,
GL_RGBA,
textureWidth,
textureHeight,
0,
GL_RGBA,
GL_UNSIGNED_BYTE,
pointerToPixels);
렌더링 할 때 알파 블렌드를 활성화합니다.
glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
glEnable(GL_BLEND);
다른 팁
@virne이 제공 한 답변은 정확하며 몇 가지 작은 수정으로 Android 장치에 사용할 수있었습니다. 그만큼 myImage
내가 사용한 객체는 투명성이있는 표준 .png 이미지입니다.
나는 이것을 사용하여 텍스처를 만들었습니다.
GLUtils.texImage2D(GL10.GL_TEXTURE_2D, 0, myImage, 0);
그리고 (Virne과 같은), 나는 렌더링 할 때 Alpha Blend를 활성화했습니다.
gl.glBlendFunc(GL10.GL_SRC_ALPHA, GL10.GL_ONE_MINUS_SRC_ALPHA);
gl.glEnable(GL10.GL_BLEND);
제휴하지 않습니다 StackOverflow