如何获取最终呈现的顶点索引?

时间:2017-08-16 08:09:37

标签: opengl unity3d

什么是仍然可以返回未被剪裁,剔除或遮挡的索引以及将要呈现的最终阶段?

1 个答案:

答案 0 :(得分:3)

要回答问题,没有一个问题。所有vertex processing rendering stagestriangle clipping之前发生。和transform feedback一样。碎片着色器不会获得顶点索引;它们仅在插值后从顶点处理阶段获得每顶点值。

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

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

它没有多大意义。渲染网格的一部分比它的价值更麻烦。为了提高性能,最好根据其可见性渲染全部或全部渲染。并且检测最好通过occlusion tests在不同的,不太复杂的形状上进行检测。