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