В тексте Руководства по программированию OpenGL, в главе 3, раздел «Просмотр трансформаций», авторы предоставляют следующий код для просмотра объекта со стороны, начиная с положения камеры по умолчанию.
glTranslatef(0.0,0.0,-5.0);
glRotatef(90.0,0.0,1.0,0.0);
Когда япопробовал это с растянутым кубом, куб нарисован неправильно (я проверяю это, рисуя оси координат - код для рисования осей не включен).Однако, изменение вызова rotate на glRotatef(-90,0.0,1.0,0.0)
делает правильную вещь.Есть идеи, почему это происходит?
Редактировать: Я понял это.Исходный пример рисует куб, растянутый в направлении y OpenGL в 2 раза. 'glTranslate
отводит объект на 5 единиц от камеры вдоль оси z.Изображение здесь: http://i.stack.imgur.com/aHRIX.png
Наконец, glRotate
поворачивает куб на 90 градусов в направлении против часовой стрелки, так что мы видим ось Z (синюю), а ось X теперь направлена назадвдоль оптической оси камеры.Изображение здесь: http://i.stack.imgur.com/O74gT.png