Opengl JOGL glut环面平移

Opengl JOGL glut环面平移,opengl,glut,jogl,Opengl,Glut,Jogl,我想平移窗口左侧的圆环体,但我不知道是什么原因导致它不起任何作用。下面是一个代码: public void display(GLAutoDrawable drawable) { GL2 gl2 = drawable.getGL().getGL2(); gl2.glClear(GL2.GL_COLOR_BUFFER_BIT | GL2.GL_DEPTH_BUFFER_BIT); gl2.glMatrixMode(GL2.GL_PROJECTION); gl2.glL

我想平移窗口左侧的圆环体,但我不知道是什么原因导致它不起任何作用。下面是一个代码:

public void display(GLAutoDrawable drawable) {
    GL2 gl2 = drawable.getGL().getGL2();
    gl2.glClear(GL2.GL_COLOR_BUFFER_BIT | GL2.GL_DEPTH_BUFFER_BIT);
    gl2.glMatrixMode(GL2.GL_PROJECTION);
    gl2.glLoadIdentity();
    gl2.glColor3f(1.0f, 0f, 0f);
    gl2.glPushMatrix();

     gl2.glTranslatef(-5.5f, -0f, -10f);
     gl2.glRotatef(30f, 1f, 1f, 1f);
     gl2.glMaterialfv(GL2.GL_FRONT_AND_BACK, GL2.GL_AMBIENT, FloatBuffer.wrap(QA_RED));
     gl2.glMaterialfv(GL2.GL_FRONT_AND_BACK, GL2.GL_DIFFUSE, FloatBuffer.wrap(QA_RED));
     gl2.glMaterialfv(GL2.GL_FRONT_AND_BACK, GL2.GL_SPECULAR, FloatBuffer.wrap(QA_WHITE));
     gl2.glMaterialfv(GL2.GL_FRONT_AND_BACK, GL2.GL_SHININESS, FloatBuffer.wrap(new float[]{30f}));
     gl2.glMaterialfv(GL2.GL_FRONT_AND_BACK, GL2.GL_AMBIENT, FloatBuffer.wrap(QA_RED));
     gl2.glMaterialfv(GL2.GL_FRONT_AND_BACK, GL2.GL_DIFFUSE, FloatBuffer.wrap(QA_RED));
     gl2.glMaterialfv(GL2.GL_FRONT_AND_BACK, GL2.GL_SPECULAR, FloatBuffer.wrap(QA_WHITE));
     gl2.glMaterialfv(GL2.GL_FRONT_AND_BACK, GL2.GL_SHININESS, FloatBuffer.wrap(new float[]{30f}));

    glut.glutSolidTorus(0.1f, 0.2f, 10, 20);

    gl2.glFlush();
}

若我添加了平移方法,那个么圆环消失了,若并没有,我就不能将其平移到左侧。请告诉我如何解决这个问题

如果要移动圆环体,我怀疑您想修改模型视图而不是投影矩阵。加载一个较大的正交投影矩阵,使用
glOrtho
为侧面提供较大的值,以便更好地查看圆环体。然后确保切换到modelview以对其进行操作:

gl2.glMatrixMode(GL2.GL_PROJECTION);
gl2.glOrtho(100.0f, 100.0f, 100.0f, 100.0f, 0.1f, 100.0f);

gl2.glMatrixMode(GL2.GL_MODELVIEW);
gl2.glLoadIdentity();

gl2.glTranslatef...etc