在JOGL中创建相机移动的最佳方法是什么?

时间:2014-07-06 14:15:35

标签: java opengl camera jogl frame-rate

我正努力让它能够在一个世界范围内移动相机,但是我很难找到可以清楚解释这一点的资源。我发现的大多数资源都在解释(至少我认为它们是如何)在没有相机移动的情况下如何在相机周围移动世界,以创造运动的幻觉。

我已经实现了这一点,但是世界的旋转导致世界围绕着世界的起源而不是相机。现在我的心态是,如果我可以将相机移动到世界并独立旋转,我会得到更好的效果。我想问哪种方式更适合在JOGL中创建相机移动。在相机周围移动世界,或者将相机移动到世界各地?

1 个答案:

答案 0 :(得分:0)

使用带有着色器的现代openGL,以便您可以执行后者。将变换存储在相机对象上,并使用它来计算传递给对象的视图矩阵。尝试使用多个摄像头和多个视口。

//C++
//choose camera to use in the viewport
for (int i = 0; i < myWin.allObj.size(); ++i)
{
    if (myWin.allObj[i]->name->val_s == "persp1") //set persp1 by default
        selCam = myWin.allObj[i];
}

//rendering loop
ViewM_t = glm::translate(glm::mat4(), -selCam->t->val_3);
ViewM_rx = glm::rotate(glm::mat4(), selCam->r->val_3.x, myWin.axisX);
ViewM_ry = glm::rotate(glm::mat4(), selCam->r->val_3.y, myWin.axisY);
ViewM = ViewM_t * ViewM_rx * ViewM_ry;

//in object
compute MVP and upload to GPU