2016-04-17 4 views
-1

У меня есть некоторые 3D-объекты. Но я хочу повернуть только некоторые из них с эффектом поворота. Мне нужно повернуть объекты, а не камеру. Как это сделать, используя GLFW? Пожалуйста, приведи пример.Поворот объектов OpenGL GLFW

ответ

2

Во-первых, вращение в OpenGL работает так же, если вы используете GLFW или нет. При использовании OpenGL без шейдеров (фиксированный трубопровод), для поворота только объект А в вашей сцене вы должны:

glMatrixMode(GL_MODELVIEW); 
glPushMatrix();    // save the current GL_MODELVIEW matrix 
glRotatef(angle, 0, 1, 0); // rotate your object 
drawObjectAHere();   // draw object A 
glPopMatrix();    // restore the GL_MODELVIEW matrix 

Более подробная информация здесь: How to rotate a specific object in openGL?

Если вы используете шейдер, вы должны создать вращение матрицы и отправьте ее в ваш вершинный шейдер. Эта библиотека может быть полезна для создания вашей матрицы вращения: http://glm.g-truc.net/0.9.7/index.html И я надеюсь, что этот учебник будет полезен также, чтобы понять, как использовать эту матрицу в ваших шейдерах, чтобы повернуть объект: http://www.geeks3d.com/20111115/how-to-compute-the-position-in-a-vertex-shader-glsl-opengl-part-3/

+0

Если объект был составлен , как его перемещать и вращать вокруг базовой оси (X, Y или Z)? – NoName2

+0

Вы не можете перемещать или поворачивать свой объект после его рисования. Сначала вы должны настроить матрицу, а затем нарисовать ее. Для перемещения и поворота объекта вы можете комбинировать glRotatef (угол, 0.0,1.0,0.0); следовать glTranslatef (0,0,0,0, -5,0); Здесь объект будет вращаться, а затем переводить. Таким образом, объект вращается сам по себе в координате 0,0,0,0, -5,0. –

Смежные вопросы