【发布时间】:2013-06-30 19:04:17
【问题描述】:
我正在使用 Opengl 中的 Eclipse C++ 创建一个保龄球游戏。
我使用 glutSolidCone() 创建了圆锥体,使用 glutSolidSphere()
创建了球当球的坐标是GLfloat ball[] = {/* X */ 0.0f, /* Y */-2.0f, /* Z */ -6.0f, /*sphere*/ 0.9f, 50.0, 50.0 };
球的代码是glTranslated(ball[0], ball[1], ball[2]);
glutSolidSphere(ball[3], ball[4], ball[5]); 看起来像
但是当我将球的 X 轴更改为 GLfloat ball[] = {/* X */ -5.0f, /* Y */ -2.0f, /* Z */ -6.0f, /*sphere*/ 0.9f, 50.0, 50.0 }; 时,它看起来像
我的 glutReshapeFunc() 代码如下:-
static void resize(int width, int height) {
const float ar = (float) width / (float) height;
glViewport(0, 0, width, height);
glMatrixMode(GL_PROJECTION);
glLoadIdentity();
glFrustum(-ar, ar, -1.0, 1.0, 1.0, 100.0);
glMatrixMode(GL_MODELVIEW);
glLoadIdentity();
}
为什么当我改变它的 X 值时,碗的形状会改变?球在中心时如何保持不变?
【问题讨论】:
-
问题是什么?
-
@Kevin 我在问为什么当我改变球的 X 值时,第二张图片中碗的形状会被修改。
-
那叫透视,你的视野可能和你想象的不一样。
-
实际上我是第一次使用 OpenGL 进行编码,在经历了很多头痛之后,我已经这样做了,然后就遇到了这个问题。你能建议任何解决方案/逻辑/代码吗?
-
我已经付出了这么大的努力,但一个人刚刚投了我的票...... Huhhhh