libGDX에서 α(반투명)가 작동하지 않을 때 체크포인트
자홍색의 사각형을 그렸지만 왼쪽의 사각형은 α가 작용하지 않는다.
오른쪽은 의도대로 50% 알파가 유효합니다.
출처
소스는 아래와 같다.
왼쪽(알파는 무효)
left Gdx.gl.glEnable(GL20.GL_BLEND);
Gdx.gl.glBlendFunc(GL20.GL_SRC_ALPHA, GL20.GL_ONE_MINUS_SRC_ALPHA);
renderer.begin(ShapeType.Filled);
renderer.setColor(1, 0, 1, 0.5f);
renderer.rect(50, 50, 300, 300);
Gdx.gl.glDisable(GL20.GL_BLEND);
renderer.end();
오른쪽(알파 유효)
right Gdx.gl.glEnable(GL20.GL_BLEND);
Gdx.gl.glBlendFunc(GL20.GL_SRC_ALPHA, GL20.GL_ONE_MINUS_SRC_ALPHA);
renderer.begin(ShapeType.Filled);
renderer.setColor(1, 0, 1, 0.5f);
renderer.rect(450, 50, 300, 300);
renderer.end();
Gdx.gl.glDisable(GL20.GL_BLEND);
까닭
알파가 작용하지 않는 쪽은 game_.renderer.end();
이라고 부르기 전에Gdx.gl.glDisable(GL20.GL_BLEND);
에서 알파를 혼합하면 무효다.
너무 어리석다game_.renderer.end();
가 호출될 때 그림이 실제적으로 집합되어 실행되기 때문에 그 전에 α가 무효화되면 안 된다.
OpenGL의 마음을 생각하면 알겠지만...
이런 이치이기 때문에 아래에 이렇게 쓰면 알파도 효과가 있다.
※ 이해하기 어려워 추천하지 않습니다.
AlphaOk renderer.begin(ShapeType.Filled);
renderer.setColor(1, 0, 1, 0.5f);
renderer.rect(450, 50, 300, 300);
Gdx.gl.glEnable(GL20.GL_BLEND);
Gdx.gl.glBlendFunc(GL20.GL_SRC_ALPHA, GL20.GL_ONE_MINUS_SRC_ALPHA);
renderer.end();
Gdx.gl.glDisable(GL20.GL_BLEND);
Reference
이 문제에 관하여(libGDX에서 α(반투명)가 작동하지 않을 때 체크포인트), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/fslasht/items/9ef2954482edad5dcb52
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
Gdx.gl.glEnable(GL20.GL_BLEND);
Gdx.gl.glBlendFunc(GL20.GL_SRC_ALPHA, GL20.GL_ONE_MINUS_SRC_ALPHA);
renderer.begin(ShapeType.Filled);
renderer.setColor(1, 0, 1, 0.5f);
renderer.rect(50, 50, 300, 300);
Gdx.gl.glDisable(GL20.GL_BLEND);
renderer.end();
Gdx.gl.glEnable(GL20.GL_BLEND);
Gdx.gl.glBlendFunc(GL20.GL_SRC_ALPHA, GL20.GL_ONE_MINUS_SRC_ALPHA);
renderer.begin(ShapeType.Filled);
renderer.setColor(1, 0, 1, 0.5f);
renderer.rect(450, 50, 300, 300);
renderer.end();
Gdx.gl.glDisable(GL20.GL_BLEND);
알파가 작용하지 않는 쪽은
game_.renderer.end();
이라고 부르기 전에Gdx.gl.glDisable(GL20.GL_BLEND);
에서 알파를 혼합하면 무효다.너무 어리석다
game_.renderer.end();
가 호출될 때 그림이 실제적으로 집합되어 실행되기 때문에 그 전에 α가 무효화되면 안 된다.OpenGL의 마음을 생각하면 알겠지만...
이런 이치이기 때문에 아래에 이렇게 쓰면 알파도 효과가 있다.
※ 이해하기 어려워 추천하지 않습니다.
AlphaOk
renderer.begin(ShapeType.Filled);
renderer.setColor(1, 0, 1, 0.5f);
renderer.rect(450, 50, 300, 300);
Gdx.gl.glEnable(GL20.GL_BLEND);
Gdx.gl.glBlendFunc(GL20.GL_SRC_ALPHA, GL20.GL_ONE_MINUS_SRC_ALPHA);
renderer.end();
Gdx.gl.glDisable(GL20.GL_BLEND);
Reference
이 문제에 관하여(libGDX에서 α(반투명)가 작동하지 않을 때 체크포인트), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/fslasht/items/9ef2954482edad5dcb52텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)