OpenGL遇到这种情况时会做什么:
glVertexAttribPointer(m_shader_position, 2, ....
但是投影矩阵是平截头体,不是正交的?
此2
函数中的 表示这是一个二维向量。现在,如果我使用 Ortho 设置我的投影矩阵,我可以绘制这些顶点。但是,如果我只是将投影更改为平截头体,它们就不再出现,但这是什么技术原因呢?
平截头体表示 3D 视图,但管道的哪一部分阻止了 2D 顶点的出现?
查看在 glVertexAttribPointer 之前绑定到 opengl 的着色器程序。您将看到您的 2D 点 [x, y] 被视为 vec4[x, y, z, w]。
如果您在屏幕上看不到该点,则表示它在截锥体之外。
如果你像这样离开 z 坐标,它默认为 0。如果你的顶点(转换后)在平截头体之外,它们将不会被绘制。
为了解决这个问题,您可以修改顶点着色器以将 z 坐标显式设置为常量值(或由统一提供)。
或者,根据你有多少点和你的内存需求,你可以从一开始就提供一个明确的 z 值:
glVertexAttribPointer(m_shader_position, 3, ....