片段或几何着色器:计算渲染三角形?

时间:2012-09-30 23:07:50

标签: performance opengl geometry triangle-count

gl_PrimitiveID似乎计算了渲染的基元数量。这似乎可以通过片段和几何着色器使用。

这是视锥体中渲染三角形的准确计数(假设只有tris,因为原始ID也适用于线和点)而不是整个场景?

1 个答案:

答案 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实际上确实看到了截锥体剔除每个三角形(我会建议)。