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"를 사용하여 텍스처 또는 그리기를로드하는 동안 특별한 작업이 필요합니까? 힌트 또는 링크를 제공해 주셔서 감사합니다.
와우, 훌륭합니다. 그 대답이었다! Color 배열을 재설정하는 것을 잊었습니다. 위 게시물에 해결책을 추가했습니다. –