我正在使用 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 值时,碗的形状会改变?当球在中心时如何保持不变?