В современном OpenGL я бы переводил, вращал, масштабировал и т. Д. Вот так:
m_cart.orientation = glm::mat4(glm::mat3(m_cart.T, m_cart.N, m_cart.B));
modelViewMatrixStack.Push();
modelViewMatrixStack.Translate(m_cart.position);
modelViewMatrixStack *= m_cart.orientation;
modelViewMatrixStack.Scale(0.01f);
m_cart.Render();
modelViewMatrixStack.Pop();
Но теперь по независящим от меня причинам мне приходится использовать какой-то старый OpenGL, и я изменил код начто-то вроде этого:
glPushMatrix();
glTranslatef(m_cart.position.x, m_cart.position.y, m_cart.position.z);
glScalef(0.01f, 0.01f, 0.01f);
m_cart.Render();
glPopMatrix();
Выше это в значительной степени эквивалентно, но я не могу понять, как я могу применить вращение, используя glm::mat4
.glRotatef
хочет угол и плывет за xyz.Я посмотрел на `glm :: декомпозировать´ , чтобы вывести их из матрицы 4x4, но это не очень понятно.
Возможно ли это?