http://homepage3.nifty.com/li-chu/OpenGL/OpenGL04.html
射影
- 正射影
- 奥行きが無視されるので、手前の物体も奥の物体も同じ大きさになる。無限遠の望遠レンズともいえる。CADなど、物体の形状確認用に向いている。
- 透視法射影
- 視点から遠くに行くほど小さく描画する。3Dゲームなど、奥行きのある画像を作りたいときに向いている。描画角が大きいと、物体が大きくゆがむ。
glOrtho
GL.glOrtho(left , right , bottom , top , near , far)
引数はすべてDouble型
正射影で描画範囲を指定する。3つのコマンドで、唯一nearにマイナスを使える。視点を移動しても、大きさは反映されない(大きさが視点からの距離に依存しないため)。視点を移動する場合、nearとfarの値は+にしたほうが混乱しにくいかもしれない。
- left
- 描画範囲の左端。視線を0として+-で入力。
- right
- 描画範囲の右端。視線を0として+-で入力。
- bottom
- 描画範囲の上端。視線を0として+-で入力。
- top
- 描画範囲の下端。視線を0として+-で入力。
- near
- 視点からどれだけ離れた位置から表示するか。+-で入力。
- far
- 視点からどれだけ離れた位置まで表示するか。+-で入力。
glFrustum
GL.glFrustum( left , right , bottom , top , znear , zfar)
引数はすべてDouble型
透視法射影で描画範囲を指定する。nearとfarの値は+のみ。また、near<farとなること。上4つが同じ値のとき、nearが小さいほど広角レンズ、大きいほど望遠レンズで撮影した画像になります。広角レンズになるほど、物体の湾曲が強くなります。また、左図下方のように、nearの値だけを変えても、距離だけでなく、描画範囲と画角も大きく変わる。描画範囲を変更する場合は注意が必要(farのみの場合は問題ない)。
- left
- 描画範囲の左端。視線を0として+-で入力。
- right
- 描画範囲の右端。視線を0として+-で入力。
- bottom
- 描画範囲の上端。視線を0として+-で入力。
- top
- 描画範囲の下端。視線を0として+-で入力。
- near
- 視点からどれだけ離れた位置から表示するか。必ず0より大きく、かつfarよりも小さな値を入れる。
- far
- 視点からどれだけ離れた位置まで表示するか。必ず0より大きく、かつnearよりも大きな値を入れる。
隠面消去
初期化
glutInitDisplayMode(GLUT_SINGLE | GLUT_RGBA | GLUT_DEPTH);
iphone の場合
glGenRenderbuffersOES(1, &depthRenderbuffer); glBindRenderbufferOES(GL_RENDERBUFFER_OES, depthRenderbuffer); glRenderbufferStorageOES(GL_RENDERBUFFER_OES, GL_DEPTH_COMPONENT16_OES, backingWidth, backingHeight); glFramebufferRenderbufferOES(GL_FRAMEBUFFER_OES, GL_DEPTH_ATTACHMENT_OES, GL_RENDERBUFFER_OES, depthRenderbuffer);
描画時の処理
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); glEnable(GL_DEPTH_TEST);
[カテゴリ: プログラミング全般]
[通知用URL]
Tweet
最終更新時間:2008年12月05日 22時07分32秒