0

入力に応じて、3D 四面体を描画し、x、y、または z 軸を中心に回転させるように依頼されました。今、私は2つの質問があります。

1) GL_TRIANGLES (4 つの三角形) を使用して四面体を描画しました。これは、変換されるプリミティブを描画するためのより良い方法ですか?

2)(私が見た他の質問から)軸の回転は、(0、-y、-z)のような特定の軸に変換し、その軸を中心に回転し、最後に元に戻すことだと思います。さて、翻訳するための値は何でしょうか? y、z? 各頂点を表す値がたくさんありますが、それらすべてを変換する必要がありますか?

4

1 に答える 1

0

たくさんの質問をするよりも、完全な回答を書く方が速いと思います:

  1. 少し楽にして高速化するには、代わりにGL_TRIANGLE_FANor を使用します。GL_TRIANGLE_STRIP

  2. 使用しているパイプラインによって異なります。

    2.1古い OpenGL (< 2.0、シェーダーなし)

    手で移動したり回転したりしないでください。適切なglRotateおよびglTranslate関数を使用します。これらの関数に渡す必要がある値は、オブジェクトの目的の位置と回転に明らかに関連しています。詳細については、ドキュメントを参照してください。

    2.2プログラム可能なパイプライン

    変換行列を (自分で、または GLM などのライブラリを使用して) 作成し、均一として頂点シェーダーに渡します。

そして、ああ、あなたは軸に変換しません。現在のビュー行列に適切な回転行列を掛けます。

より複雑なトピックを掘り下げる前に、もう少し読むようにしてください。このチュートリアルでは、最新の OpenGL を十分にカバーしています。古い OpenGL を使用せざるを得ない場合は、代わりにNeHe チュートリアルを参照してください。

于 2013-02-12T14:21:31.033 に答える