此刻,我将vec3
转换为vec4
,将其与矩阵相乘,然后将其转换回vec3
码:
glm::vec3 transformed = glm::vec3(matrix * glm::vec4(point, 0.0))
它有效,但是我认为这不是计算它的好方法。是否可以在
mat4
上应用vec3
而不将其转换为vec4
并返回? 最佳答案
使用OpenGL时,最好坚持使用homogeneous coordinates。对于3D空间,它们是4D vector ,通常第四个元素等于1。执行此操作时,所有计算都在4维空间中,因此无需在任何地方进行转换。
还要注意,在您的示例中,您实际上将丢失可能已记录在转换矩阵中的所有翻译。如果要保留此值,则需要对第4个元素使用1,而不是0。
Appendix F of the Red Book描述了如何以及为何在OpenGL中使用齐次坐标。
关于c++ - 使用glm将vec3与mat4相乘,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/36358621/