10

我想用(camera.rotationMatrix)转换glm::vec3glm::mat4camera.target)。我尝试乘以这给我一个错误:错误:'originalTarget * 中的'operator*' 不匹配((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

您想首先将您的第 4 个元素转换glm::vec3为 a ,然后将它们相乘。glm::vec40

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