在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()
构造一个未初始化的矩阵。