Я заменяю свое использование glu-методов в моем проекте с помощью glm, и, похоже, я столкнулся с странной разницей, которую я не могу объяснить. Когда я использую этот код, чтобы установить матрицу проецирования с помощью gluPerspective, я получаю это отображается:glm :: перспектива против gluPerspective
glMatrixMode(GL_PROJECTION);
glLoadIdentity();
gluPerspective(70.0f, (GLfloat)w/(GLfloat)h, 0.0001f, 1000.0f);
Если я переключаюсь на GLM :: перспективу, я получаю это:
glMatrixMode(GL_PROJECTION);
glm::mat4 projectionMatrix = glm::perspective(70.0f, (GLfloat)w/(GLfloat)h, 0.0001f, 1000.0f);
glLoadMatrixf(&projectionMatrix[0][0]);
Совершенно ясно, что объект, который я получаю, теперь занимает больше места с версией glm. Других изменений в двух версиях нет, кроме замены gluPerspective для glm :: перспектива.
Я предполагаю, что я, вероятно, что-то делаю неправильно, потому что я понимаю, что glm :: перспектива должна быть каплей замены gluPerspective. Но я точно не знаю, что это на данный момент.
Кроме того, разница в ориентации заключается в том, что объект вращается в сцене. Я просто закончил снимать скриншот в разное время в анимации.
Обратите внимание, что в использовании glm не слишком много смысла, если вы все равно используете устаревшие функции матрицы. Вы должны использовать шейдерную форму. В любом случае, проверьте, как glm сохраняет свои матрицы независимо от того, хранятся ли они в строке или столбце, и посмотрите, соответствует ли это 'glLoadMatrixf' –
. Я также планирую отказаться от устаревших матричных функций, но это было просто начиная с замены устаревших функций с помощью glm, когда я столкнулся с этой проблемой. Мне также нужно удалить мое использование переутомления. Что касается порядка, то glm должен соответствовать тому, что использует GL, поскольку в противном случае было бы немного сложно использовать. Вызов glLoadMatrix был взят из их документации. –