안드로이드에서 OpenGL ES 2에서 제대로 블렌딩을 할 수없는 것 같습니다. 내가 갖고있는 것은 알파 채널이있는 텍스쳐이며 해당 알파와 함께 나타나기를 원합니다. 블렌드는 맨 위에 그려진 오브젝트의 알파가 1.0 인 경우에도 추가로 나타납니다. 내 프래그먼트 쉐이더에서는 알파 값을 1.0으로 하드 코딩했는데 색상이 아닌 알파 값을 사용하는 것 같습니다. 예를 들어Android OpenGL ES 2 - 블렌딩이 항상 첨가제 인 것 같습니다
, 그것은 다음과 같습니다이의 대신
:
내가 올바른 순서로 그리기하고,이 예에서 파란색은 회색 사각형의 정상에 완전히 불투명해야합니다. 여러 블렌딩 모드 (하나, 하나), (알파, 알파) 등 여러 그리기 순서를 사용하고 깊이 테스트를 사용하지 않았습니다. 나는 잘못된 결과를내는 랜덤 블렌드 모드를 시도했기 때문에 블렌딩이 설정 될 때 변경되고있다.
저는 OpenGL이 가법적인 색상을 혼합하고 있다는 것이 문제라고 생각합니다. (Alpha, Alpha)는 나에게 의미가 있으며, 쉐이더에서 알파를 1.0으로 명시 적으로 설정하면, 파란색 원이있는 정사각형 (텍스처가 투사 된 실제 모양)을 얻게 될 것이라고 생각합니다. 이것은 일어나지 않는 퍼즐입니다. 나는 sfactor와 dfactor 블렌딩 기능을 충분히 이해하지 못합니다.
고마워요! 문제는 GLUtils.texImage2D()가 자동으로 미리 곱하기 비트 맵을 사용한다는 것입니다. (그리고 어떤 이유로 안드로이드는 수정 사항을 포함하지 않습니다.) 당신이 말한 것처럼. 나에게 맞는 해결책은 게시물 # 3의 코드를 복사하여 [link] (https://groups.google.com/forum/#!topic/android-developers/uqbDPmP4L8o)하고 \t \t GLES20.glBlendFunc GLES20.GL_SRC_ALPHA, GLES20.GL_ONE_MINUS_SRC_ALPHA); – user1055947
WebGL에는 WebGL의 경우이 동작이 [명확하게 정의되어 있습니다] (http://www.khronos.org/registry/webgl/specs/latest/1.0/#2.4) 사양에 있지만 이와 동일한 "문제"가 있습니다. –