从GLSL顶点着色器中检索数据

时间:2011-05-30 16:09:35

标签: opengl glsl shader vertex-shader

我想要在绘制之前排序很多透明图元,但是要获得Z坐标,排序键,我在软件中执行顶点着色器在硬件中执行的所有变换。

我想我可以通过从着色器中检索Z坐标来优化过程,并使用它来对下一帧中的基元进行排序。由于基元的顺序预计不会在帧之间急剧变化,因此它应提供足够公平的排序。那么,我想知道如何从顶点着色器返回一批Z坐标?有可能吗?

2 个答案:

答案 0 :(得分:2)

您可以使用Transform Feedback将Vertex Shader输出中的数据导入缓冲区,稍后您可以阅读,但我认为这不会对您有所帮助,您应该分析哪种解决方案最好(实验性)

答案 1 :(得分:1)

不应单独查看每个基元,而应根据连接的网格的边界体积进行排序。如果您在空间细分结构(如Kd或BSP树)中组织几何体,这种排序或多或少会免费提供。然后排序问题被简化为在正确的方向上实现树的遍历 - 基本上它可以归结为第一次遍历的深度,其中分支以近乎←→远的方式遍历。