OpenGL 从眼睛坐标转换为屏幕坐标

OpenGL transform from eye coordinates into screen coordinates

提问人:Root 提问时间:11/12/2023 最后编辑:Root 更新时间:11/12/2023 访问量:43

问:

为了将 3D 点投影到 2D 屏幕,我们首先需要将世界坐标转换为眼睛坐标,然后将眼睛坐标转换为屏幕坐标。我一直在阅读这篇文章。摄像机场视图 = 远剪裁平面-近剪裁平面吗?

但是在 OpenGL 中,屏幕坐标的范围是,所以我想我必须以某种方式规范化输出,但是如何?(-1,1)

OpenGL 图形

评论

1赞 Rabbid76 11/12/2023
LearnOpenGL - 坐标系
0赞 Root 11/12/2023
@Rabbid76我想知道是否可以先将每个点 3D 转换为 2D 点,然后在着色器中使用它们。
0赞 Root 11/12/2023
难道我们不能在自己完成转换后使用 2D 着色器吗?例如,让 3Dvertices 成为 3D 对象的顶点,然后在我们将这些数据绑定到 VertexBuffer 对象之前,将 3D 顶点转换为 2D 顶点,然后执行我们对 2D 对象执行的操作。
0赞 Rabbid76 11/12/2023
为什么要这样做?GPU 还需要 3D 信息,例如用于深度测试。让着色器完成它的工作。使用 3D 坐标,并使用视图矩阵和投影矩阵转换顶点着色器中的坐标。不要重新发明轮子。请阅读坐标系
2赞 Rabbid76 11/12/2023
那么深度测试呢?要正确显示三维对象,您需要进行深度测试。顶点变换呢,是否要变换 CPU 上的顶点,然后更新顶点缓冲区?在每一帧中?这通常是在着色器的 GPU 上完成的,因为着色器对许多顶点并行执行此操作,因此速度要快得多,这对于实时渲染至关重要。

答: 暂无答案