0

glTranslate()の引数は、原点が変換される単位の量を指定します。そのため、ディスプレイを超えて移動する可能性があります。描画領域を超えないように、移動量を正規化する方法はありますか?

4

1 に答える 1

6

glTranslate() への引数は、原点が変換される単位の量を指定します。

いいえ (固定関数 GL の学習をやめるべきもう 1 つの理由)。

glTranslate現在の行列を右乗算して新しい現在の行列になる行列を生成します。平行移動行列を作成しますが、必ずしも画面の中心から移動するとは限りません。たとえば、これは完全に有効です。

glTranslatef(10.0f, 10.0f, 10.0f);
glTranslatef(0.0f, 50.0f, 0.0f);

これを行うことも有効です:

glTranslatef(10.0f, 10.0f, 10.0f);
glRotatef(90.0f, 0.0f, 0.0f, 1.0f);
glTranslatef(0.0f, 50.0f, 0.0f);

これは平行移動を行い、次に Z 軸を中心に 90 度回転します。これは、実行される最終的な翻訳に影響します。

そこに体重計を入れることもできます。

オブジェクトを画面上に保持したい場合は、OpenGL ではなく、あなた次第です。

于 2012-04-14T21:41:36.390 に答える