2014-02-09 2 views
3

알파 색상이 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" + 
        "}"; 

은 어떻게 예상대로 매우 첫 번째 프레임을 렌더링 할 있다?

감사

+2

어떤 블렌드 기능을 사용하고 있습니까? 'glBlendFunc (GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);'? 첫 번째 프레임을 렌더링하기 전에 알파 채널을 올바르게 지우시겠습니까? – LumpN

+0

예, create()의 glBlendFunc가 트릭을 수행합니다. 구체적으로는 "Gdx.gl20.glBlendFunc (GL20.GL_SRC_ALPHA, L20.GL_ONE_MINUS_SRC_ALPHA);" 글꼴을 렌더링 할 때 SpriteBatch를 사용하고 있습니다. glBlendFunc는 SpriteBatch 내부에 포함되어 있기 때문에 다른 모든 프레임이 괜찮은 것처럼 보입니다. 답변으로 말씀하신 내용을 게시 할 수 있으며 동의 할 것입니다. 감사합니다. – Jayco

+0

@Jakob이 질문에 답변 해드립니다.이를 해결 된 것으로 표시 할 수 있습니다. 감사 – Springrbua

답변

0

glBlendFunc가에서 (생성) 수행, 특히 트릭, "Gdx.gl20.glBlendFunc (GL20.GL_SRC_ALPHA, L20.GL_ONE_MINUS_SRC_ALPHA);" 나는 SpriteBatch를 사용하여 메쉬 바로 뒤에 글꼴을 렌더링합니다. glBlendFunc는 SpriteBatch 내부에 포함되어 있기 때문에 다른 모든 프레임이 괜찮은 것처럼 보입니다.