关于opengl:如何通过glm :: mat4转换glm :: vec3

How can I transform a glm::vec3 by a glm::mat4

我想通过glm::mat4(camera.rotationMatrix)转换glm::vec3(camera.target)。 我尝试乘以一个错误:错误:'originalTarget * ((Camera*)this)->Camera::rotationMatrix中'operator *'不匹配。 我想我不能乘以vec3 * mat4。
GLM是否有一些功能可以改变这一点? 其他方式进行转换?

编码:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
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);
}

您要首先将第四个元素为0glm::vec3转换为glm::vec4,然后将它们相乘。

1
glm::vec4 v(originalUp, 0);