알파 색상이 1.0 미만인 쉐이더를 사용하여 libgdx 메쉬를 렌더링합니다.libgdx - 첫 프레임의 블렌딩/알파를 무시하는 쉐이더
첫 번째 프레임을 렌더링 할 때 쉐이더에 설정된 알파 값은 무시되고이며 1.0으로 렌더링됩니다. 다음의 모든 렌더링 프레임은 문제가 없습니다.
glDrawArrays를 사용하여 이전 프로젝트 드로잉 선과 모양에서 나에게도 일어난 일이 있으며 아직 해결책을 찾지 못했습니다. (} {) (작성 컴파일)
Gdx.gl20.glClearColor(0, 0, 0, 1);
Gdx.gl20.glClear(GL20.GL_COLOR_BUFFER_BIT | GL20.GL_DEPTH_BUFFER_BIT);
Gdx.gl20.glEnable(GL20.GL_BLEND);
MeshManager_colorFill.meshShader.begin();
MeshManager_colorFill.meshShader.setUniformMatrix("u_worldView", Snappr.camMatrix);
meshArray_colorFill.render(MeshManager_colorFill.meshShader, GL20.GL_TRIANGLE_FAN, 0, meshArray_colorFill.get(i).getNumVertices());
MeshManager_colorFill.meshShader.end();
Gdx.gl20.glDisable(GL20.GL_BLEND);
내 쉐이더 : libgdx에서
코드 루프) (렌더링
public static final String meshVertexShader_colorFill =
"attribute vec2 a_position; \n" +
"uniform mat4 u_worldView;\n" +
"void main() \n" +
"{ \n" +
" gl_Position = u_worldView * vec4(a_position.xy, 0, 1); \n" +
"} \n" ;
public static final String meshFragmentShader_colorFill =
"precision mediump float;\n" +
"void main() \n" +
"{ \n" +
" gl_FragColor = vec4(1,1,1,0.2);\n" +
"}";
은 어떻게 예상대로 매우 첫 번째 프레임을 렌더링 할 있다?
감사
어떤 블렌드 기능을 사용하고 있습니까? 'glBlendFunc (GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);'? 첫 번째 프레임을 렌더링하기 전에 알파 채널을 올바르게 지우시겠습니까? – LumpN
예, create()의 glBlendFunc가 트릭을 수행합니다. 구체적으로는 "Gdx.gl20.glBlendFunc (GL20.GL_SRC_ALPHA, L20.GL_ONE_MINUS_SRC_ALPHA);" 글꼴을 렌더링 할 때 SpriteBatch를 사용하고 있습니다. glBlendFunc는 SpriteBatch 내부에 포함되어 있기 때문에 다른 모든 프레임이 괜찮은 것처럼 보입니다. 답변으로 말씀하신 내용을 게시 할 수 있으며 동의 할 것입니다. 감사합니다. – Jayco
@Jakob이 질문에 답변 해드립니다.이를 해결 된 것으로 표시 할 수 있습니다. 감사 – Springrbua