【发布时间】:2015-10-22 14:00:24
【问题描述】:
我正在尝试使用 OpenGL 渲染 3D 模型。对于投影和变换矩阵,我使用的是 glm。我在屏幕上显示了我的模型,它的工作方式与我的预期一样;除了一个小问题。
我将模型的平移矩阵设置为
glm::translate(glm::vec3(0, 0, 4)
将模型向前移动一点以便我可以看到它。由于在 OpenGL 中,默认情况下,负 z 朝向“相机”而正 z 朝向前方,我希望这可以工作,但事实并非如此。仅当我将其设置为时才有效
glm::translate(glm::vec3(0, 0, -4)
但这对我来说似乎很奇怪,因为我将我的 zNear 设置为 0.01,zFar 设置为 1000。glm 的 z 值是翻转还是我在这里做错了什么?
这是我的代码:
glm::mat4 rotation = glm::mat4(1.0f);
glm::mat4 translation = glm::translate(glm::vec3(0, 0, -4));
glm::mat4 scale = glm::mat4(1.0f);
glm::mat4 modelMatrix = translation * rotation * scale;
glm::mat4 projectionMatrix = glm::perspective(70.0f, aspectRatio, 0.01f, 1000.0f);
glm::mat4 transformationMatrix = projectionMatrix * modelMatrix;
【问题讨论】:
标签: c++ opengl 3d transformation glm-math