【发布时间】:2014-08-27 12:44:07
【问题描述】:
我知道在 opengl 中相机不会移动,但模型会围绕它移动。好吧,我需要相机在MODELVIEW 中的位置...是的,我也知道有很多关于它的话题,但我尝试了他们正在做的所有事情来获取相机坐标,但它总是返回(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];
他们都给了我相同的结果(0,0,0),谁能告诉我我做错了什么?
【问题讨论】:
-
您正在使用已弃用的固定功能管道
-
我只是opengl的初学者,请您解释一下
-
这听起来很像是您正在尝试做的事情,而 def 是错误的想法。您可能应该重新考虑您实际尝试归档的内容以及是否有更好的选择。要在 GL 矩阵堆栈中保持理智,您需要自己设置。
-
我找到了更好的方法,我把答案贴出来了,谢谢!
-
其实OpenGL中根本没有摄像头。如果您的逻辑中有一个相机对象,则从那里获取它的位置。不要将 OpenGL 视为场景图,因为 OpenGL 不是场景图。