0

openGL の使用についていくつか質問があります。私は openGL を使用する初心者であり、正方形の RGB を設定しようとしましたが、機能しますが、ブレンド機能を使用した後は機能しません。そして、再描画すると、正方形は最終的に消えます。

以下はコードの一部です

@Override
public void onDrawFrame(GL10 gl) {
    // clear Screen and Depth Buffer
    gl.glClear(GL10.GL_COLOR_BUFFER_BIT | GL10.GL_DEPTH_BUFFER_BIT);

    // Reset the Modelview Matrix
    gl.glLoadIdentity();

    // Drawing
    gl.glTranslatef(0.0f, 0.0f, -5.0f);     // move 5 units INTO the screen
    GLES20.glBlendFunc(GLES20.GL_SRC_ALPHA, GLES20.GL_ONE_MINUS_SRC_ALPHA);
    GLES20.glEnable(GLES20.GL_BLEND);                   // is the same as moving the camera 5 units away
    square.draw(gl);                        // Draw the triangle
    //square.loadGLTexture(gl, this.context);
    gl.glColor4f(red, green, blue, 0f);
    red = red - 0.01f;
    blue = blue - 0.01f;
    green = green - 0.01f;
    GLES20.glDisable(GLES20.GL_BLEND);


}
4

1 に答える 1

1

初めて onDrawFrame が呼び出されると、カラー バッファと深度バッファの両方がクリアされ、次に三角形が描画され、その後、カラーが 0 アルファ値で変更されます。

次回 onDrawFrame が呼び出されると、三角形がもう一度描画されますが、今回はアルファ値 0 を使用します。カラー バッファーと深度バッファーの両方がクリアされているため、そのブレンド関数を使用してアルファが 0 であるため、おそらく空の画面が表示されます。 「完全に透明」と言い換えることができます。

于 2013-04-10T10:05:33.910 に答える