表示機能に次の OpenGL コードがあります。
glLoadIdentity();
gluLookAt(eyex, eyey, eyez, atx, aty, atz, upx, upy, upz);
// called as: gluLookAt(20, 5, 5, -20, 5, 5, 0, 1, 0);
axis();
glutWireCube (1.);
glFlush ();
axis()
(0,0,0) から (10,0,0)、(0,10,0) および (0,10,0) への線と、(1,0,0) から (1, 3,0)。
私の reshape 関数には次のものが含まれています。
glViewport (0, 0, (GLsizei) w, (GLsizei) h);
glMatrixMode (GL_PROJECTION);
glLoadIdentity ();
gluPerspective(45.0, (GLsizei) w / (GLsizei) h, 1.0, 100.0);
glMatrixMode (GL_MODELVIEW);
1.
このイメージは、への引数として を使用してプログラムを実行した結果を示していglutWireCube
ます。
ご覧のとおり、キューブは (0,0,0) を中心としていません。ドキュメントには次のように記載されています。
立方体はモデリング座標の原点を中心にしています (...) (ソース)
引数としてプログラムを実行すると5.
、立方体はさらに移動します。
それはなぜですか? (0,0,0) の周りにキューブを配置するにはどうすればよいですか?
さらに詳しい情報
axis()
との順番を入れ替えても構いませんglutWireCube
。で囲んaxis()
でglPushMatrix()
もglPopMatrix()
直らない。
解決
gluPerspective
カメラから遠くを見るように変更したところ、Z バッファリングが適切に機能するようになり、立方体が原点の周りに配置されていることが明らかになりました。