3

プロジェクトが最適化段階に近づくにつれて、Vertexメタデータを減らすと3Dレンダリングのパフォーマンスが大幅に向上する可能性があることに気付きました。

最終的に、私は心から探し回って、stackoverflowからの次のアドバイスを見つけました。

OpenGLES頂点配列でGL_FLOATの代わりにGL_SHORTを使用する

GLshortsを使用して、法線座標またはテクスチャ座標をどのように表現しますか?

iPhoneでOpenGLES1.1を高速化するためのアドバイス

簡単な実験では、頂点と法線を「FLOAT」から「SHORT」に切り替えるのは難しいことではありませんが、頂点を元のサイズ(glScalefを使用)に縮小する場合、法線に逆数を掛けるのが問題です。スケールの。これに対する自然な救済策は、GPUに送信する前に、法線をスケールで乗算することです。すると、スケールファクターは通常0より小さいので、私の短い法線はほぼ0になります。

頂点と法線の両方に同時に「短い」をどのように使用しますか?これとあれを丸一日ほど試してきましたが、今のところ「フロート頂点w/バイトノーマル」または「ショート頂点w/フロートノーマル」しか行けませんでした。

よろしくお願いします。

4

2 に答える 2

1

これを呼び出して、法線を正規化することはできませんか?

glEnable( GL_NORMALIZE );

正規化はGPUに少し影響を与える可能性があるため、理想的ではありませんが、ボトルネックの原因がGPUへのデータの受け渡しによるものなのか、GPUの実行が多すぎるためなのかによって異なります。他の最適化と同様に、どちらがより良い速度を与えるかを理解する必要があります。頂点データを渡すことで速度が低下する可能性があるので、速度を上げることができます

于 2010-05-14T07:36:41.497 に答える
0

試すことができること:

  • GL_NORMAL行列をいじってスケーリングに対抗してみてください
  • 頂点シェーダーを使用して、必要に応じて計算を実行します
  • 頂点データを縮小せず、代わりにカメラマトリックスを拡大します
于 2010-05-14T08:59:25.830 に答える