10

glm::vec3(camera.target) を (camera.rotationMatrix) で変換したいglm::mat4。これを掛けてみると、 error:error: no match for 'operator*' in 'originalTarget * ((Camera*)this)->Camera::rotationMatrix. vec3 * mat4 を掛けることはできないと思います。GLM はこれを変換する機能を持っていますか? 変換を行う他の方法は?

コード:

void Camera::Update(void)
{
// Aplicamos la rotacion sobre el target
glm::vec3 originalTarget = target;
glm::vec3 rotatedTarget = originalTarget * rotationMatrix;

// Aplicamos la rotacion sobre el Up
glm::vec3 originalUp = up;
glm::vec3 rotatedUp = originalUp * rotationMatrix;

// Establecemos las matrices de vista y proyeccion
view = lookAt(
position, //eye
rotatedTarget, //direction
rotatedUp //up
);
projection = perspective(
FOV,
(float) getParent()->getEngine()->GetCurrentWidth() / getParent()->getEngine()->GetCurrentWidth() ,
near_plane,
far_plane);
} 
4

1 に答える 1

15

glm::vec3最初に yourをglm::vec44 番目の要素 aで a に変換し0、次にそれらを乗算します。

glm::vec4 v(originalUp, 0);
于 2012-12-03T19:21:10.877 に答える