0

AndroidでOpengl ES 2.0を学習すると述べたところ、解決方法がわからない問題に遭遇しました。大きな平面フィールドを作成したいのですが、作成してテクスチャを配置しましたが、ここで問題が発生します。すべてを描画するわけではなく、Z軸に約10単位しか表示されません.. Xは問題ありません。大きな正方形を作成したいのですが、長方形が表示されます。誰かがはさみを取り、特定の Z 座標を切り取ったようなものです。

コードのどの部分をここに配置すればよいかさえわかりません、shader ? 平面座標? カメラ設定?

お待ちいただいてどうもありがとうございます。

4

1 に答える 1

1

飛行機が視錐台またはビュー ボリュームによってクリップされているように聞こえます。これは通常、glOrtho() または glPerspective() によって設定されます。これらの関数に対する近平面パラメーターと遠平面パラメーターの間の距離を増やしてみてください。

Android が提供するデフォルトのフラスタムに依存している場合、独自のフラスタムを作成する必要がある場合があります。glOrtho() の場合は次のようになります。

typedef struct
{
    float f0;
    float f1;
    float f2;
    float f3;
    float f4;
    float f5;
    float f6;
    float f7;
    float f8;
    float f9;
    float f10;
    float f11;
    float f12;
    float f13;
    float f14;
    float f15;
} Mat4;

void Ortho(Mat4 * pMat4, float left, float top, float right, float bottom, float nearPlane, float farPlane)
{
    float rcplmr = 1.0f / (left - right);
    float rcpbmt = 1.0f / (bottom - top);
    float rcpnmf = 1.0f / (nearPlane - farPlane);

    pMat4->f0 = -2.0f * rcplmr;
    pMat4->f1 = 0.0f;
    pMat4->f2 = 0.0f;
    pMat4->f3 = 0.0f;
    pMat4->f4 = 0.0f;
    pMat4->f5 = -2.0f * rcpbmt;
    pMat4->f6 = 0.0f;
    pMat4->f7 = 0.0f;
    pMat4->f8 = 0.0f;
    pMat4->f9 = 0.0f;
    pMat4->f10 = -2.0f * rcpnmf;
    pMat4->f11 = 0.0f;
    pMat4->f12 = (right + left) * rcplmr;
    pMat4->f13 = (top + bottom) * rcpbmt;
    pMat4->f14 = (nearPlane + farPlane) * rcpnmf;
    pMat4->f15 = 1.0f;
}
于 2013-07-24T15:27:25.553 に答える