OpenGL ES 1.0関数「drawArray」を使用して長方形を描画するのが好きで、この長方形の上にアルファを使用してテクスチャを描画したいと思います。(Hud要素とdrawArray長方形は、その要素の「塗りつぶし状態」を示します)。
基本的には機能しますが、drawArray長方形の上に描画するアルファ付きのテクスチャは、長方形の色の影響を受けます。drawArrayは青い長方形を描画し、描画後のテクスチャも青みがかった色で表示されます。
ここで私が使用している関数は次のとおりです。
解決済み-「ソリューションの開始」を参照
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の長方形がテクスチャの色に影響を与えないようにするために、何か特別なことをしなければなりませんか?ヒントやリンクをありがとう。