2012-05-11 7 views
1

私はOpenGLで4分割ビューアを開発しています。 1つのビューは斜視図であり、他のビューは正面投影(前面、左上、上)です。glOrtho()ビューで立方体を描く?

キューブを(-1、-1、-1)から(1,1,1)に描画する方法を書いていますが、パースビューではうまく機能しますが、 glOrtho(...)を使う私の意見。

は今、私はこのようにそれを設定します。

glOrtho(0, width, height, 0, 0, 1); 

面白いことは、ビューがすべてでキューブを示さないこと、です。私はOpenGLのビューの境界線を実装しましたが、これは正しく表示されます。

私はQtを使用しており、QGLWidgetの派生クラスを作成しました。

+0

あなたのビューポートも幅単位で、幅と高さは、正方形のビューで2ピクセル幅になるようにするスクリーン座標(たとえば800x600)です。また、遠くのクリッピングプレーンは0と1であり、目の位置に応じてキューブをクリップします。 – vmpstr

+0

意味があります。 ;)したがって、正方形のビューのみを拡大するためにglScaleを使用するか、より巧妙な方法がありますか? – fuji

+0

@ j.dog:通常、投影空間のボリュームに設定されている制限を、オブジェクトのものと一致するように選択します。 glOrtho(-aspect、aspect、-1、-1、-1)のような立方体の場合、aspect = viewport_width/viewport_height – datenwolf

答えて

1

glOrthoは、model transformview transformの後の表示スペースで6つのクリッピングプレーンを定義します。したがってScreen Spaceではなく、Eye SpaceにglOrthoのパラメータを指定する必要があります。あなたの場合、が(0.0, 0.0, 0.0)で、viewportwidthで、heightであるとすると、glOrtho(-width/(float)height, width/height, -1.0f, 1.0f, -1.0f, 1.0f)である必要があります。近くの平面が観察者の後ろにある場合(目の位置)、NearValパラメータはglOrthoである必要があります。 glOrthoを男性にしたいかもしれません。 4th ChapterCg tuturialは、異なる座標空間の変換に関する詳細な情報、すなわちObject Space,World Space,Eye Space,Clip space,Normalized Device SpaceおよびWindow Spaceを与えることができます。

+0

どのように目の位置を100,120と言い換えると変わりますか? – paulm

+0

@paulm目の位置はモデルの位置に関連していますので、モデルの位置を変更して目に合わせることができます。 – toolchainX

関連する問題