OpenGl es에서는 투명한 픽셀이있는 텍스처를 어떻게로드합니까?

StackOverflow https://stackoverflow.com/questions/611219

  •  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);
라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top