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