2017-08-16 68 views
-1

什么是最后一个阶段仍然有可能返回未被剪辑或者被删除或者被遮挡,并且将被渲染的索引?如何获取最终渲染的顶点索引?

+0

您无法访问任何着色器中的索引。你想做什么。 – BDL

+0

我正在试图找到隐藏在相机中的网格区域。 –

+0

您可以运行网格的顶点并检查它们是否位于相机的平截头体中。但是这可能相当昂贵。 – Everts

回答

3

要回答问题,没有一个。全部vertex processing rendering stages发生之前triangle clipping。和transform feedback一样。并且片段着色器不得到顶点索引;他们只能从插值后的顶点处理阶段获得每个顶点的值。

理论上,你可以做这样的事情。你的VS输出一个顶点的整数索引,取自gl_VertexID。你需要一个GS来获取这三个指数,并将它们组合成一个flat uvec3。每个输出顶点将被赋予相同的值。然后,片段着色器可以获得uvec3,并通过SSBOatomic counter将每个索引写入缓冲区。

当然,你会多次得到相同的索引(假设三角形共享索引)。但你可以做到。

它只是没有多少意义。渲染网格的一部分比它的价值更麻烦。对于性能,最好根据其可见性渲染全部或全部渲染。检测最好通过occlusion tests在不同的,不太复杂的形状上完成。