获取opengl中的摄像头位置

时间:2014-08-27 12:44:08

标签: c++ opengl

我知道在opengl中相机不会移动,但模型正在四处移动。好吧,我需要MODELVIEW中相机的位置...是的,我也知道有很多关于它的主题但我尝试了所有他们正在做的事情以获得相机坐标,但它总是返回{{1} (相机的真实位置)。

这就是我正在尝试的:

(0, 0, 0)

也试过这个(如某些主题所述):

GLfloat mdl[16];
float camera_org[3];
glMatrixMode( GL_MODELVIEW );
glPushMatrix();
glGetFloatv(GL_MODELVIEW_MATRIX, mdl);
camera_org[0] = -(mdl[0] * mdl[12] + mdl[1] * mdl[13] + mdl[2] * mdl[14]);
camera_org[1] = -(mdl[4] * mdl[12] + mdl[5] * mdl[13] + mdl[6] * mdl[14]);
camera_org[2] = -(mdl[8] * mdl[12] + mdl[9] * mdl[13] + mdl[10] * mdl[14]);

他们都给了我相同的结果camera_org[0] = mdl[12]; camera_org[0] = mdl[13]; camera_org[0] = mdl[14]; ,有谁能告诉我我做错了什么?

1 个答案:

答案 0 :(得分:3)

我找到了答案:

int viewport[4]; 
// get matrixs and viewport:
glGetDoublev( GL_MODELVIEW_MATRIX, matModelView ); 
glGetDoublev( GL_PROJECTION_MATRIX, matProjection ); 
glGetIntegerv( GL_VIEWPORT, viewport ); 
gluUnProject( (viewport[2]-viewport[0])/2 , (viewport[3]-viewport[1])/2, 
0.0, matModelView, matProjection, viewport,  
&camera_pos[0],&camera_pos[1],&camera_pos[2]);

这将为您提供场景中相机的坐标。