0

重複の可能性:
Google の Android OpenGL チュートリアルは間違った線形代数を教えていますか?

Android での OpenGL ES 2.0 の学習。エミュレーターを使用し、Android 4.1 を実行しています。

Android デベロッパー サイト / OpenGLからコピーして貼り付けたスニペット

onDrawFrameメソッドを更新しました。以下に貼り付けます。Null MatrixMatrix.setIdentityM(mRotationMatrix, 0)だったので追加。mAngle を angle に変更しました (16 行目)。

public void onDrawFrame(GL10 unused) {
    // Redraw background color
    GLES20.glClear(GLES20.GL_COLOR_BUFFER_BIT);

    // Set the camera position (View matrix)
    Matrix.setLookAtM(mVMatrix, 0, 0, 0, -3, 0f, 0f, 0f, 0f, 1.0f, 0.0f);

    // Calculate the projection and view transformation
    Matrix.multiplyMM(mMVPMatrix, 0, mProjMatrix, 0, mVMatrix, 0);

    // Create a rotation transformation for the triangle
    long time = SystemClock.uptimeMillis() % 4000L;
    float angle = 0.090f * ((int) time);

    Matrix.setIdentityM(mRotationMatrix, 0); //added
    Matrix.setRotateM(mRotationMatrix, 0, angle, 0, 0, 1.0f); //changed

    // Combine the rotation matrix with the projection and camera view
    Matrix.multiplyMM(mMVPMatrix, 0, mRotationMatrix, 0, mMVPMatrix, 0);

    // Draw shape
    mTriangle.draw(mMVPMatrix);
}

そしてコメントアウトsetRenderMode(RENDERMODE_WHEN_DIRTY);

それでも、描かれた三角形は回転しませんでした。どこで私は間違えましたか?

4

1 に答える 1

0

ここでこの質問に感謝します。私はこれを解決することを学びました。

頂点シェーダーコードを編集するだけです。uMVPMatrixは、これがないと投影が適用されないことが重要です。

private final String vertexShaderCode = "attribute vec4 vPosition;"
        +"uniform mat4 uMVPMatrix;"
        + "void main() {" + "  gl_Position = uMVPMatrix * vPosition;" + "}";
于 2012-10-01T18:54:34.040 に答える