JOGL - перевести GL_QUADS

В JOGL я пытаюсь создать несколько 3D-форм, используя GL_QUADS (т.е. различные компоненты целого объекта), и до сих пор это было нормально, но я не могу понять, как преобразовать форму, должен быть способ сделать это, но я не очень хорошо знаком с GL_QUADS, поэтому я не совсем уверен, как это сделать. Редактирование gl.glVertex3f просто приводит к тому, что форма имеет другой размер, и это, кажется, единственное, что я могу редактировать, возможно ли дать GL_QUAD имя переменной?


person thrash    schedule 20.02.2013    source источник


Ответы (2)


Вы можете использовать функцию glTranslatef:

// render the shape
gl.glTranslatef(5.0f, 0.0f, 0.0f); // translate along x, y, z
// render the shape - you will now have two shapes next to each other
person gcvt    schedule 20.02.2013
comment
Спасибо за ответ, я пробовал это, прежде чем спрашивать, но это ничего не дало? Это потому, что у меня есть public void display(GLAutoDrawable drawable) { и довольно много glBegin? - person thrash; 20.02.2013
comment
Команда не действует, если вы поместите ее внутри glBegin...glEnd. Его нужно вызывать до glBegin. Только несколько команд JOGL/OpenGL действительны в пределах glBegin...glEnd: glprogramming.com/red/ Chapter02.html Если это не поможет, будет лучше, если вы опубликуете свой исходный код. - person gcvt; 20.02.2013
comment
Работал отлично после установки перед glBegin большое спасибо! - person thrash; 20.02.2013

Вызов gl.glTranslatef(1.0f, 0.0f, 0.0f); будет применяться к текущей матрице в стеке, фактически означая, что все, что вы рисуете с этого момента, будет отображаться на 1 единицу вдоль оси x от того, что было на матрице раньше (вероятно, начало координат в вашем случае).

Я понимаю, почему это может показаться запутанным, вместо того, чтобы создавать фигуру, затем перемещая ее (это невозможно, она уже нарисована), вы захотите перевести затем Нарисуй свою форму.

Например:

gl.glPushMatrix();
    gl.glTranslatef(1.0f, 0.0f, 0.0f);
    gl.glBegin(GL2.GL_QUADS);
        // draw some vertices here
    gl.glEnd();
gl.glPopMatrix();
person Quetzalcoatl    schedule 20.02.2013