OpenGL 3D点精灵相机矩阵

时间:2018-08-02 03:15:26

标签: opengl

由于使用的矩阵,我在将点精灵放置在3D空间中时遇到问题。问题出在我的顶点着色器中(我省略了不必要的部分):

#version 330

in vec3 position; // 3d position of the particle
uniform mat4 vp_matrix; // the projection and view matrices from the camera

void main()
{
    gl_Position = vp_matrix * vec4(position, 1);
}

当前,我正在将视图和投影矩阵上载到此矩阵统一中。但这会导致粒子在相机移动时以意想不到的方式旋转和移动(即与我场景中的其他对象不同)。

将投影矩阵应用于点精灵是否有意义?还是只应应用视图矩阵?我应该应用整个视图矩阵,还是仅应用平移和/或旋转?

1 个答案:

答案 0 :(得分:0)

我很抱歉,发现这种“奇怪的”运动是由于错误的偏移量造成的,在这里我写了3个浮点值而不是2个浮点值。

但如果有人想知道将什么矩阵应用于点精灵,@ Rabbid76是正确的,则必须对其应用投影矩阵,并且还必须应用视图矩阵。这意味着您必须同时应用摄像机的视图矩阵和投影矩阵。这是因为相机的旋转和平移确实需要影响点。