14

半径4の(2,3)を中心とする円など、ワールド座標で定義されたオブジェクトがあります。円が歪まないようにするには、ビューポートで完全に表示し、ビューポート内でできるだけ大きくします。 、次の場合に、前述の仕様に基づいてワールドウィンドウを作成するためにgluOrtho2Dコマンドを作成するにはどうすればよいですか。

glViewport(20, 30, 1000, 500)?

ビューポート全体とワールドvsスクリーンなどの座標で混乱しています。誰かが私にそれを案内してもらえますか?私は本当にこれのコツをつかみたいです。

4

1 に答える 1

28

あなたの例では、ビューポートは横 1000 ピクセル、高さ 500 ピクセルです。したがって、同じ縦横比 (2:1) を持つ glOrtho 座標を指定する必要があります。

円は半径 4 単位であるため、少なくとも高さ 8 単位、幅 8 単位のビューが必要です。2:1 の縦横比を考慮して、幅 16 ユニット、高さ 8 ユニットにしましょう。

中心は (2, 3) です。したがって、これらの 16 x 8 を中心にすると、次のようになります。

glOrtho2D (2 - 8, 2 + 8, 3 - 4, 3 + 4);

あれは:

glOrtho2D (-6, 10, -1, 7);

これにより、X 座標の -6 がビューポートの左端に効果的にマップされます。glViewport マッピングは、それを画面上の実際の位置にマップします。画面サイズが変わると、アスペクト比を補正するために glOrtho2D 座標を調整する必要がありますが、ビューポートが 2:1 である限り、これらの glOrtho2D 呼び出しを変更する必要はありません。

于 2010-01-20T06:07:39.973 に答える