所以我试图放大和缩小在半径为0.6的(0,0,0)处绘制的球体,除非一旦达到约-1.6的Z,它和我绘制的方向的轴已经消失而且我不确定为什么。
这是我的翻译代码:
glMatrixMode(GL_PROJECTION);
glLoadIdentity();
glRotatef(rotX,1.0f,0.0f,0.0f);
glRotatef(-rotY,0.0f,1.0f,0.0f);
help2.setText("xShift : " +xShift+ " yShift : " +yShift+ " zShift : " + zShift);
glTranslatef(xShift,yShift,zShift);`
这是绘图:
static Sphere temp = new Sphere();
temp.draw(0.6f, 100, 100);
这是我的预设设置:
glMatrixMode(GL_PROJECTION);
glLoadIdentity();
gluPerspective(50f, 1.0f, 0.01f, 1000f);
glMatrixMode(GL_MODELVIEW);
glLoadIdentity();
glEnable(GL_DEPTH_TEST);
glEnable(GL_LINE_SMOOTH);
glShadeModel(GL_SMOOTH);
答案 0 :(得分:0)
glMatrixMode(GL_PROJECTION);
glLoadIdentity();
glRotatef(rotX,1.0f,0.0f,0.0f);
...
为什么在这里使用投影矩阵?不应以这种方式改变投影矩阵。此代码消除了您使用gluPerspective()所做的工作,并将其替换为身份转换。
你几乎肯定会在这里使用GL_MODELVIEW矩阵。一旦设置了透视图,您就没有理由再次将矩阵模式设置为GL_PROJECTION,除非您想要修改方面(如果您有调整大小窗口事件),FOV或近或远平面。
glMatrixMode(GL_MODELVIEW);
glLoadIdentity();
将此保留在标识变换处,您将相机设置在原点,向下看负Z轴。据推测,你的球体也在原点绘制,所以你看到它的内部。尝试使用gluLookAt()
将初始相机位置设置为不同的位置gluLookat(0, 0, 3, 0, 0, 0, 0, 1, 0);
这使您在Z轴上看球的3个单位看原点。如果您的球体绘制的半径为0.6,那么它应该是可见的。