为什么是我的glutWireCube不放在起源?
-
12-09-2019 - |
题
我有以下照片的代码显示功能:
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).
我重塑功能包含以下内容:
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缓冲正常工作,因此很清楚的是立方体放置在原籍。
解决方案
你确定轴不弄乱视图矩阵?
如果你把它叫做立方体的绘制后会发生什么?
编辑补充:
其实......在照片仔细看,它看起来像它可能的是的以原点为中心。
立方体的中心似乎与3个轴的交点恰好对齐。看起来很可疑的唯一的事情是,红线不超过白边写。你有Z缓冲设置正确?
其他提示
它可能是正确的,我认为这是难以确定由于透...但我猜测它不是自盯着一个点。
快速排除 axis()
不是修改模型观矩阵中,环绕的呼叫与矩阵推/持久性有机污染物:
glPushMatrix();
axis();
glPopMatrix();
事调查/检查:
- 这是整个窗口?似乎有些奇怪的观点是下一个角落。
- 它不会帮助如果你加入一个增加的旋转之前呈现?这可以使其更易于确定视角,通过给予更多的线索。
- 你也可以尝试移动"照相机"的周围,通过改变的参数
gluLookAt()
动态。
不隶属于 StackOverflow