此刻,我将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/

10-10 11:24