我必须更改使用gluLookat
and构建的相机实现glMultmatrixf
。
实现的相机是一个轨迹球相机,其中相机围绕一个点旋转。
相机的方向是
//set projection
glMatrixMode(GL_PROJECTION);
gluPerspective (..);
//modelview
glMatrixMode(GL_MODELVIEW);
glLoadIdentity();
gluLookAt(pCamera.x, pCamera.y, pCamera.z,
pTarget.x, pTarget.y, pTarget.z,
up.x, up.y, up.z);
然后是
glMultMatrixf(transformViewMatrix);
围绕点移动相机,transformViewMatrix
从鼠标坐标计算
我必须将 Oculus Rift 与相机集成,以便相机可以原地旋转而不是围绕一个点旋转。
我可以从 Oculus 传感器获得一个旋转矩阵,rotOculus
.
我尝试乘以transforViewMatrix
.rotOculus
glMultMatrixf(transformViewMatrix*rotOculus);
但要知道我正在看的物体是原地旋转而不是相机
然后我尝试用 分配transformViewMatrix
,rotOculus
但这与用鼠标旋转轨迹球相同,只是改为 Oculus。
我认为为了现场旋转相机,我需要将相机转换为原点pCamera
,那么glMultMatrixf(rotOculus)
?
但是我无法访问如何订购glTranslate
, gluLookAt
,glMultMatrixf
方法,因为这些方法是在 dll 中实现的,我只能更改pCamera
, pTarget
,up
和viewTransformMatrix
.
谁能指出在这种情况下我如何可以现场旋转相机?谢谢你。