glClearColor(0.0, 0.0, 0.0, 1.0);
glClear(GL_COLOR_BUFFER_BIT);
glMatrixMode(GL_PROJECTION);
glLoadIdentity();
/* use this length so that camera is 1 unit away from origin */
double dist = sqrt(1 / 3.0);
gluLookAt(dist, dist, dist, /* position of camera */
0.0, 0.0, 0.0, /* where camera is pointing at */
0.0, 1.0, 0.0); /* which direction is up */
glMatrixMode(GL_MODELVIEW);
glBegin(GL_LINES);
glColor3d(1.0, 0.0, 0.0);
glVertex3d(0.0, 0.0, 0.0);
glVertex3d(1.0, 0.0, 0.0);
glColor3d(0.0, 1.0, 0.0);
glVertex3d(0.0, 0.0, 0.0);
glVertex3d(0.0, 1.0, 0.0);
glColor3d(0.0, 0.0, 1.0);
glVertex3d(0.0, 0.0, 0.0);
glVertex3d(0.0, 0.0, 1.0);
glEnd();
glFlush();
4条答案
按热度按时间bvpmtnay1#
尝试使用gluLookAt
结果
我们可以画一个立方体来检查平行线是否确实平行
3vpjnl9f2#
等轴测投影只是使用具有特定旋转Angular 的正交投影。
你应该能够选择8个可能的方向中的任何一个,使用正交投影,并得到你的模型的完美等距视图。只要按照你参考的Wiki文章中的数学方法设置视图矩阵,并为你的投影矩阵做一个正交投影,你就万事俱备了。
wdebmtf23#
也许我没有完全正确地理解数学,但是你不能像维基百科链接中解释的那样放置你的相机,并使用标准的正交投影吗?
即使不一样,投影堆栈也完全取决于您。
p5fdfcr14#
如果您不想使用GLU,这里是使用glOrtho的基本框架
把这样的事情叫做
如果你想在2d和2.5d之间切换(这样你就可以画你的UI),那么我有类似的功能来进入和离开2d模式。