在Java的OpenGL中,Matrix4f具有transform()方法。我正在尝试使用此示例,但想将其转换为使用GLM。但是我无法在GLM中找到与transform()等效的东西,也无法掌握transform()的实际作用。

例如:

在Java中:

Vector4f direction = new Vector4f(x, y, z, 1);
Matrix4f rotationMatrix = new Matrix4f();
… set rotationMatrix …
Matrix4f.transform(rotationMatrix, direction, direction);

使用C++中的GLM:
vec4 direction = vec4(x, y, z, 1);
mat4 rotationMatrix = mat4();
… set rotationMatrix …
??? What to use instead of transform() ???

最佳答案

GLM提供了* -operator。可以与OpenGL Shading Language (GLSL)中的运算符类似地使用,例如:

vec4 direction = vec4(x, y, z, 1.0f);
mat4 rotationMatrix = mat4(1.0f);

direction = rotationMatrix * direction;

请注意,如果您想构造一个Identity matrix,则需要将一个标量(1.0)传递给mat4的构造函数(例如mat4(1.0f))。 mat4()构造一个未初始化的矩阵。

08-28 06:51