转换为OpenGL中心3D对象

时间:2015-08-19 23:57:34

标签: opengl

我想将3D对象置于屏幕中心并能够旋转/缩放它。在进行旋转/缩放时,对象中心仍处于同一位置。 (类似于MeshLab演示文稿)。

这是我的顶点着色器:

gl_Position = mvp * vec4(VertexPosition,1.0);

这是我在客户端代码中的模型视图矩阵:

mat4 mvp = glm::translate(glm::mat4(1), vec3(-centerx, -centery, -centerz));
mvp = glm::scale(view, vec3(0.5/zoom, 0.5/zoom, 0.5/zoom));

Centerx,centery等是对象的中心。缩放是对象的最大大小(因此它显示在-1和1之间)。如何进行正确的转换?我还需要其他东西吗?

enter image description here

这是一个方框,我按顶点位置对其进行着色。

1 个答案:

答案 0 :(得分:1)

我对glm不太熟悉,但我的猜测是你必须更新着色器中的矩阵。您可以使用glUniformMatrix*(mvp, ...)等函数执行此操作。

当您操作要在着色器中使用的矩阵或其他变量时,必须将此更新发送到着色器,否则它将不起作用。