2012-08-07 3 views
0

OpenGL ES 1.0 함수 "drawArray"로 직사각형을 그리고이 직사각형 위에 알파로 텍스처를 그립니다. (Hud 요소와 drawArray 사각형은 해당 요소의 "채우기 상태"를 보여줍니다.)android OpenGL es drawarray with alpha

기본적으로 작동하지만 drawArray 사각형 위에 그려주는 알파가있는 텍스처는 사각형의 색상의 영향을받습니다. drawArray는 파란색 직사각형을 그립니다. 그리기 후에 텍스처가 파란색으로 표시됩니다. 여기

내가 사용 기능 :

이 해결 - 페이지의 "START 해결 방법"

private void bagFillState(GL10 gl) { 
    // fill state background 
    gl.glMatrixMode(GL10.GL_MODELVIEW); 
    gl.glLoadIdentity(); 
    gl.glPushMatrix(); 
    gl.glScalef(0.25f, 0.25f, 0f); 
    gl.glTranslatef(0.0f, 3.0f, 0f); 

    gl.glDisable(GL10.GL_TEXTURE_2D); 

    // Draw background 
    gl.glVertexPointer(2, GL10.GL_FLOAT, 0, _vertsGUIFillBuffer); 
    gl.glEnableClientState(GL10.GL_VERTEX_ARRAY); 
    gl.glColorPointer(4, GL10.GL_FLOAT, 0, _colorGUIFillBuffer); 
    gl.glEnableClientState(GL10.GL_COLOR_ARRAY); 
    gl.glDrawArrays(GL10.GL_TRIANGLE_STRIP, 0, 4); 

    // START SOLUTION - Add the following Line 
    gl.glDisableClientState(GL10.GL_COLOR_ARRAY); 
    // END SOLTUTION 

    gl.glEnable(GL10.GL_TEXTURE_2D); 

    gl.glPopMatrix(); 
    gl.glLoadIdentity();   
} 

위에 질감을 그리는 방법 :

private void bagChoosing(GL10 gl) { 
    // HUD 
    gl.glMatrixMode(GL10.GL_MODELVIEW); 
    gl.glLoadIdentity(); 
    gl.glPushMatrix(); 
    gl.glScalef(0.25f, 1.0f, 1f); 
    gl.glTranslatef(0.0f, 0.0f, 0f); 

    gl.glMatrixMode(GL10.GL_TEXTURE); 
    gl.glLoadIdentity(); 

    _gui.draw(gl); 
    gl.glPopMatrix(); 
    gl.glLoadIdentity(); 
} 

public void onDrawFrame(GL10 gl) { 
    gl.glClear(GL10.GL_COLOR_BUFFER_BIT | GL10.GL_DEPTH_BUFFER_BIT | GL10.GL_STENCIL_BUFFER_BIT); 

    background1(gl); 

    movePlayer1(gl); 
    bagFillState(gl); 
    bagChoosing(gl); 

    // All other game drawing will be called here 
    gl.glEnable(GL10.GL_BLEND); 
    gl.glBlendFunc(GL10.GL_SRC_ALPHA, GL10.GL_ONE_MINUS_SRC_ALPHA); 
} 

인가를 drawArray 사각형이 텍스처 색상에 영향을 미치지 않도록 "drawArray"를 사용하여 텍스처 또는 그리기를로드하는 동안 특별한 작업이 필요합니까? 힌트 또는 링크를 제공해 주셔서 감사합니다.

답변

1

텍스처를 그리기 전에 색상 포인터를 재설정 했습니까, 아니면 GL_COLOR_ARRAY 클라이언트 상태를 비활성화 했습니까?

청색이 여전히 활성화되어있는 것처럼 들리지만, 이는 샘플링 된 텍스처를 변조합니다.

문제의 이미지에 대한 링크뿐만 아니라 질문에 대한 답변을 얻지 못할 경우 텍스처의 전체 그리기 코드를 입력하십시오.

+0

와우, 훌륭합니다. 그 대답이었다! Color 배열을 재설정하는 것을 잊었습니다. 위 게시물에 해결책을 추가했습니다. –