0

レンダリング コードを最適化する必要があります。現在、glPushMatrix() を glTranslatef() および glRotatef() と共に使用しています。しかし、これは単一の頂点配列呼び出しですべてのオブジェクトをレンダリングするよりもコストがかかります。

glRotatef() とまったく同じように、頂点データを回転させる OpenGLの高速組み込み関数はありますか? そうでない場合、どのライブラリまたはメソッドを使用することをお勧めしますか? 私が知っている唯一の方法は、sin/cos 関数を使用して頂点を回転させることですが、それが最速の方法なのか、それとも同じ結果になるのかはわかりません。

オブジェクト (2D レンダリング) ごとに 1 つの軸に沿って 1 回だけ回転する必要があるため、非常に複雑にする必要も、その glPushMatrix() システムを最大限にサポートする必要もありません。

編集:これにはシェーダーを使用したくありません。

Edit2:ゼロ ポイントに沿って回転する個々のクワッド (2D モード) のみをレンダリングしているため、たとえば、各頂点は -10 から 10 の値になります。私の現在のコード:(quad.vert[i].x*cosval)-(quad.vert[i].y*sinval)(2回、yも)。

4

1 に答える 1

4

glRotateシェーダーを使用したくないので、古いバージョンの OpenGL を使用していると仮定しています。

呼び出しを表示リストに入れるglRotate*()か、自分で回転行列を計算できます。OpenGL Red Book の第 3 章付録 Fには、行列を自分で作成するために必要な情報が記載されています。表示リストの詳細については、第 7 章を​​参照してください。

于 2012-04-29T18:21:06.937 に答える