0

私は最近、openGL を使い始めました。これは、通常のビューのキャンバスが私のニーズに対して十分に強力ではなくなったためです。しかし、私はopenglの座標系を理解していないようです。

下座標 y=0 の長方形を作成すると、画面の上半分に長方形の結果が得られます。それは期待できます。

しかし、y=0.25f に設定すると、長方形が画面の 4 分の 1 になると予想されます。しかし、実際にはそれより少なく、1/6 や 1/7 のようなものです。

または、y=0.375f (画面の 1/8 である必要があります) を試したとき、結果は 1/11 または 1/12 のようなものです。なぜそれが起こるのか説明できますか?何が欠けていますか。そして、どうすれば画面の上部 1/8 を埋める四角形を作成できますか?

(画面の上部と下部は、ズームインで-+0.5f座標を持っていることがわかっています)

4

2 に答える 2

0

この例のコード サンプルは次のとおりです。

Android のトレーニング > 投影ビューとカメラ ビューの適用

  1. カメラ ビューを定義する

    // 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);
    

    私の場合、y 軸の範囲が -1 から +1 の座標系を生成します。

  2. 投影を定義する

    @Override
    public void onSurfaceChanged(GL10 unused, int width, int height) {
        GLES20.glViewport(0, 0, width, height);
    
        float ratio = (float) width / height;
    
        // this projection matrix is applied to object coordinates
        // in the onDrawFrame() method
        Matrix.frustumM(mProjMatrix, 0, -ratio, ratio, -1, 1, 3, 7);
    }
    

    ウィンドウの比率を修正します

于 2013-06-27T09:49:10.510 に答える