如果两个使用相同的顶点位置,如何确保绘制的对象遮挡另一个?

时间:2016-01-08 19:24:17

标签: opengl

我正在开发一个OpenGL项目,我必须绘制一个彩色网格块以及与块中每个单元格接壤的(白色/黑色)线。

构成单元格的顶点位置与用于线条(边框)的顶点位置相同。

如果我使用相同的顶点来绘制单元格和线条,那么这些线条会被面部遮挡,还是反过来呢?

如何确保线条始终可见?

1 个答案:

答案 0 :(得分:4)

这取决于depthfunc。如果后面的基元位于较早的基元之前,则使用GL_LESS以后的基元绘制早期的基元。使用GL_LEQUAL,如果它们不在后面的原语(即同一个帖子或之前),那么后面的原语就会被绘制。

因此,您可以使用GL_LEQUAL在单元格之后绘制线条,也可以使用GL_LESS在线条之后绘制单元格。

如果使用不同的着色器,可能需要将gl_Position声明为不变量,以确保计算出的坐标完全相等。