В JOGL я пытаюсь создать несколько 3D-форм, используя GL_QUADS (т.е. различные компоненты целого объекта), и до сих пор это было нормально, но я не могу понять, как преобразовать форму, должен быть способ сделать это, но я не очень хорошо знаком с GL_QUADS, поэтому я не совсем уверен, как это сделать. Редактирование gl.glVertex3f
просто приводит к тому, что форма имеет другой размер, и это, кажется, единственное, что я могу редактировать, возможно ли дать GL_QUAD имя переменной?
JOGL - перевести GL_QUADS
Ответы (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
Спасибо за ответ, я пробовал это, прежде чем спрашивать, но это ничего не дало? Это потому, что у меня есть
public void display(GLAutoDrawable drawable) {
и довольно много glBegin
?
- person thrash; 20.02.2013
Команда не действует, если вы поместите ее внутри
glBegin
...glEnd
. Его нужно вызывать до glBegin
. Только несколько команд JOGL/OpenGL действительны в пределах glBegin
...glEnd
: glprogramming.com/red/ Chapter02.html Если это не поможет, будет лучше, если вы опубликуете свой исходный код.
- person gcvt; 20.02.2013
Работал отлично после установки перед
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