gl_PrimitiveID
似乎计算了渲染的基元数量。这似乎可以通过片段和几何着色器使用。
这是视锥体中渲染三角形的准确计数(假设只有tris,因为原始ID也适用于线和点)而不是整个场景?
答案 0 :(得分:3)
gl_PrimitiveID
变量从几何着色器输出并馈送到片段着色器。如果不存在几何着色器,则片段着色器的gl_PrimitiveID
是在当前渲染调用中处理的基元数。也就是说,它是通过顶点处理管道发送的点/线/三角形的数量。如果你致电glDrawArrays(GL_TRIANGLES, 0, 33);
,你会在半开放范围[0,11]得到gl_PrimitiveID
。
如果几何着色器 存在,那么gl_PrimitiveID
将接受从GS输出的任何值。如果存在GS且不写入该值,则片段着色器将获取未定义的值。请注意,对于您编写的每个顶点,您只需将gl_PrimitiveIDIn
复制到gl_PrimitiveID
即可获得标准的OpenGL行为。
简而言之,不,它没有考虑视锥体剔除。除非你的GS实际上确实看到了截锥体剔除每个三角形(我会建议)。