0

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の長方形がテクスチャの色に影響を与えないようにするために、何か特別なことをしなければなりませんか?ヒントやリンクをありがとう。

4

1 に答える 1

1

テクスチャを描画する前にカラーポインタをリセットしましたか、それともGL_COLOR_ARRAYクライアントの状態を無効にしましたか?

サンプリングされたテクスチャを変調している青色がまだ有効になっているようです。

問題の画像にリンクするだけでなく、これで質問に答えられない場合は、テクスチャの完全な描画コードを入力してください。

于 2012-08-07T18:04:26.200 に答える