我用OpenGL绘制了一个球体,该球体将通过glRotate(),glScale()和glTranslate()进行转换。
如何在不自己计算所有转换的情况下获得对象的绝对位置?
我需要用于将相机眼睛位置设置到这一点的坐标。
最佳答案
使用这些转换时,您需要操纵modelviewmatrix
要获得当前版本,可以使用(http://linux.die.net/man/3/glgetfloatv)
void glGetFloatv(
GLenum pname,
GLfloat * params
);
例如:
float modelview[16];
// save the current modelview matrix
glPushMatrix();
// get the current modelview matrix
glGetFloatv(GL_MODELVIEW_MATRIX , modelview);
应该会为您提供当前矩阵,将起始 vector /顶点/坐标与此矩阵相乘将得到绝对的世界坐标。
编辑:在制作应用程序时,您通常希望控制每个对象的绝对坐标,对其进行操作,并使用opengl转换将它们绘制在定义它们的位置。