1

このチュートリアル/サンプルを使用して、iPhoneで基本的なオブジェクトトラッキングを実行しています。すべてが正常に機能し、パフォーマンスを大幅に調整しましたが、それでも1つの問題が発生します。

基本的な問題は、OpenGLを十分に理解していないことです。恥ずかしそうにサンプルコードを取得し、それを自分に合ったものに変えたことで罰せられるべきです。実際のところ、私は罰せられています。

このサンプルは、iPhoneのカメラを(シェーダーを使用して)オフスクリーンテクスチャにレンダリングして、処理して画面に表示できるようにする方法を示しています。これで、頂点属性の配列を使用してテクスチャ/レイヤーを描画することがわかりました(Google検索にもかかわらず、ほとんど理解できない原則です)。

頂点配列は次のとおりです。

static const GLfloat squareVertices[] = {
        -1.0f, -1.0f,
        1.0f, -1.0f,
        -1.0f,  1.0f,
        1.0f,  1.0f,
};

static const GLfloat textureVertices[] = {
        1.0f, 1.0f,
        1.0f, 0.0f,
        0.0f,  1.0f,
        0.0f,  0.0f,
};

また、これらの頂点属性によって、描画されたテクスチャの方向が変わる可能性があることもわかりました。テクスチャが縦向きに描画されるようになりました。つまり、iPhoneを横向きに保ち(希望する)、ビューを回転させると、画面に表示されるものはすべて90度の角度のカメラになります。

私はこれらの頂点を非難するのに十分に問題を絞り込んだと思います、そして私はそれらの値をいくらかいじり回しましたが、許容できる結果はありませんでした。

風景にテクスチャを描くのを手伝ってくれる人はいますか?

PS:'squareVerticles'の値を逆にすると、180度回転した画像を取得できます。ただし、テクスチャを180度ではなく90度回転させたいと思います。

4

1 に答える 1

2

画面の座標が-1.0,-1.0(左、下)から。に正規化されていると想像してください1.0, 1.0。最初の配列は、正方形の頂点の座標を指定します(「Z」形式で指定されているため、おそらく三角ストリップとして)。

2番目の配列は、テクスチャ座標を指定します。それらが範囲内にあることを除いて、同じこと0.0, 1.0

したがって、時計回りに90度回転するには:

1.0f, 0.0f
0.0f, 0.0f
1.0f, 1.0f
0.0f, 1.0f

反時計回り:

0.0f, 1.0f
1.0f, 1.0f
0.0f, 0.0f
1.0f, 0.0f

私はそれがうまくいくことを願っています!

于 2011-05-26T15:43:09.337 に答える