我用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转换将它们绘制在定义它们的位置。

10-04 21:54