Opengl 如何从glMultMatrixf获取平移和旋转?

Opengl 如何从glMultMatrixf获取平移和旋转?,opengl,Opengl,我正在查看旧的OpenGL代码,如: 它使用此glMultMatrixf api创建一个圆锥体状对象。假设我们想使用类似于添加(const-eigent::Vector3f&translation,const-eigent::Quaternionf&rotation)的东西使其现代化。如何从glMultMatrixf获取平移和旋转?您不需要从glMultMatrix的结果中获取任何信息-您已经拥有了包含此对象的合成变换的矩阵Twc.m,当切换到现代OpenGL时,使用Twc.m作为单独的矩阵是该

我正在查看旧的OpenGL代码,如:


它使用此glMultMatrixf api创建一个圆锥体状对象。假设我们想使用类似于添加(const-eigent::Vector3f&translation,const-eigent::Quaternionf&rotation)的东西使其现代化。如何从
glMultMatrixf
获取平移和旋转?

您不需要从
glMultMatrix
的结果中获取任何信息-您已经拥有了包含此对象的合成变换的矩阵
Twc.m
,当切换到现代OpenGL时,使用
Twc.m
作为单独的矩阵是该代码中唯一保持不变的部分。现在,您只需在顶点着色器中应用该矩阵(与视图和投影变换结合使用)。

glMultMatrixf在旧API中仅将变换(平移、旋转和缩放的任意组合)应用于后续几何体。你的createAt大概只是一个翻译。查找创建Twc.m矩阵的代码,并查看它使用的值
 glPushMatrix();
    glMultMatrixf(Twc.m);

    glLineWidth(mCameraLineWidth);
    glColor3f(0.0f,1.0f,0.0f);
    glBegin(GL_LINES);
    glVertex3f(0,0,0);
    //... more glVertex3f
    glEnd();

glPopMatrix();