OpenGL: что вращает glRotatef?
Когда я звоню glRotatef
как это:
glRotatef(angle,0.0,1.0,0.0) //rotate about y-axis
Я знаю, что это вращаться angle
градусы о y axis
,
Но что здесь вращается? Какой именно объект?
Возможно, глупый вопрос, но я совершенно новичок в этом.
Я смог повернуть строку об ее конечной точке, используя ответ здесь, но я не очень понимаю, как это работает внутри.
2 ответа
Ничто не вращается, потому что OpenGL не "хранит" объекты.
glRotatef, как и glMultMatrixf, используется для изменения текущей выбранной матрицы преобразования. Это влияет на то, как вещи нарисованы впоследствии. Один устанавливает матрицы (и другие вещи!) Как хочет, а затем рисует свои объекты.
Для получения дополнительной информации, смотрите RedGL Redbook и изучите разницу между "сохраненным режимом" и "немедленным режимом".
glRotate
будет действовать на текущую матрицу, которая по умолчанию GL_MODELVIEW
, Это повлияет на любой трехмерный объект, который вы рисуете в последовательности. Текущая матрица изменяется с glMatrixMode
, Затем матрица вида модели применяется к любой геометрии, отображаемой с glVertex
, glDrawArrays
, так далее.
Матрицы на стороне OpenGL устарели. Если вы используете ядро OpenGL 3+, эти функции больше не доступны. Если вы новичок в OpenGL, я советую вам пропустить изучение старых способов и сосредоточиться на современном, шейдерно-ориентированном OpenGL. Вы можете проверить следующие ссылки для некоторых хороших учебников.