OpenGL 3D点精灵相机矩阵
Posted
技术标签:
【中文标题】OpenGL 3D点精灵相机矩阵【英文标题】:OpenGL 3D point sprites camera matrix 【发布时间】:2018-08-02 03:15:25 【问题描述】:由于我使用的矩阵,我无法在 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);
目前我正在将视图和投影矩阵上传到这个矩阵制服。但这会导致粒子在相机移动时以意想不到的方式旋转和移动(即与我场景中的其他对象不同)。
将投影矩阵应用于点精灵是否有意义?还是我应该只应用视图矩阵?我应该应用整个视图矩阵,还是只应用平移和/或旋转?
【问题讨论】:
“将投影矩阵应用于点精灵有意义吗?” 是的,为什么不呢?一个点的 3D 顶点坐标与任何其他几何体的坐标没有什么不同。投影矩阵描述了从场景的 3D 点到视口的 2D 点的映射。您也必须将投影矩阵应用于点精灵。 【参考方案1】:我很抱歉,事实证明这个“奇怪”的运动是因为我写了 3 个浮点值而不是 2 个的偏移量错误。
但如果有人想知道将什么矩阵应用于点精灵,@Rabbid76 是正确的,您必须对其应用投影矩阵,还必须应用视图矩阵。这意味着您确实应用了来自相机的视图和投影矩阵;这是因为相机的旋转和平移确实需要影响点。
【讨论】:
以上是关于OpenGL 3D点精灵相机矩阵的主要内容,如果未能解决你的问题,请参考以下文章