トップ 差分 一覧 ソース 置換 検索 ヘルプ PDF RSS ログイン

射影と隠面消去の説明

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よりも大きな値やマイナスでもエラーにはならないが、混乱しやすいので注意(farとの大小が逆転すると、描画方向も変わる)。
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);

[カテゴリ: プログラミング全般]



  • Hatenaブックマークに追加
  • livedoorクリップに追加
  • del.icio.usに追加
  • FC2ブックマークに追加

最終更新時間:2008年12月05日 22時07分32秒