1

OpenGL ES 2.0 チュートリアルをベースとして、Android プラットフォームで OpenGL をいじっています。問題のコードは次のとおりです。

public void onSurfaceChanged( GL10 unused, int width, int height )
{   GLES20.glViewport( 0, 0, width, height );

    float ratio = (float) width / height;
    Matrix.frustumM( mProjMatrix, 0, -ratio, ratio, -1, 1, 1,  9.9999f );

    Matrix.setLookAtM( mVMatrix, 0, 0.0f, 0.0f, -1.0f, 0.0f, 0.0f,  0.0f, 0.0f, 1.0f,  0.0f );

    muMVPMatrixHandle = GLES20.glGetUniformLocation( mProgram, "uMVPMatrix" );
}

特に、frustumM への「far」パラメーター。そのパラメータが 10 のときはいつでも、イメージ (三角形) は表示されません。それ以外の値は問題ありません。なんで?

私はかなりの量の読書をしましたが、すべて役に立ちませんでした。私の友人 (別名 Google) でさえ、私を助けることができませんでした。

前もって感謝します。

4

1 に答える 1

1

射影行列を計算するとき、ファー プレーンを 9.9999f に指定します。これが、ビュー 行列の計算で eyeZ 値が 10 以上の場合、空のイメージになる理由です。あなたは視錐台の外を見ています。

この記事をご覧ください: http://www.lighthouse3d.com/tutorials/view-frustum-culling/

于 2012-02-29T20:46:50.457 に答える