【发布时间】:2013-02-26 15:26:01
【问题描述】:
我对 GLU.gLookAt(eyeX,eyeY,eyeZ,Xpos,Ypos,Zpos,upX,upY,upZ) 方法的使用感到非常困惑。我想要的只是缩放 3d 立方体。 当我增加/减少 eyeZ 的值时,相机向前/向后移动到立方体。在 eyeZ 的某个限制范围内一切正常,但是当我将 eyeZ 值增加到超过该限制时,它开始恢复效果,即不是放大而是开始缩小。
我可能不擅长openGL,无法理解上述方法,但谁能告诉我这背后的基本原因是什么。 我提到了这个链接 http://jerome.jouvie.free.fr/opengl-tutorials/Tutorial8.php
如果你愿意,我可以在这里发布我的代码..
public void onDrawFrame(GL10 gl)
{
gl.glClear(GL10.GL_COLOR_BUFFER_BIT | GL10.GL_DEPTH_BUFFER_BIT);
gl.glMatrixMode(GL10.GL_MODELVIEW);
gl.glLoadIdentity();
//gl.glTranslatef(xPos, yPos, -zoomFactor);
GLU.gluLookAt(gl, eyeX, eyeZ, eyeZ, 0f, 0f, 0f , 0f, 1f, 0f);
gl.glRotatef(mAngleX, 0, 1, 0);
gl.glRotatef(mAngleY, -1, 0, 0);
// Draw the model
cube.draw(gl);
}
这是我使用 gLookAt 方法的方法..
【问题讨论】:
-
发布您的代码,以及它开始缩小的点
-
好吧,如果你沿着这条线移动相机,那么在某一点你是最接近你的目标的。
-
public void onDrawFrame(GL10 gl) { gl.glClear(GL10.GL_COLOR_BUFFER_BIT | GL10.GL_DEPTH_BUFFER_BIT); gl.glMatrixMode(GL10.GL_MODELVIEW); gl.glLoadIdentity(); //gl.glTranslatef(xPos, yPos, -zoomFactor); GLU.gluLookAt(gl, eyeX, eyeZ, eyeZ, 0f, 0f, 0f, 0f, 1f, 0f); gl.glRotatef(mAngleX, 0, 1, 0); gl.glRotatef(mAngleY, -1, 0, 0); // 绘制模型 cube.draw(gl); }
-
请不要将代码块发布为 cmets。改为编辑问题。
-
对不起..我不知道该怎么做..