我有一个灰度纹理(8000 * 8000),每个像素的值是一个ID(实际上,这个ID是片段所属的三角形的ID,我想用这个方法来计算有多少个三角形和哪个三角形在我的场景中可见)。如何使用GLSL计算指定彩色像素的数量?
现在我需要统计有多少个唯一的ID以及它们是什么。我想用GLSL实现这一点,并尽量减少GPU RAM和RAM之间的数据传输。
我想出的最初想法是使用着色器存储缓冲区,将它绑定到GLSL中的数组,其大小为totalTriangleNum,然后在着色器中迭代ID纹理,将数组元素增加1等于纹理中的ID。
之后,读取缓冲区到OpenGL应用程序,并得到我想要的。这是否是一种有效的方式?还是有一些更好的解决方案,比如计算着色器(以及我不熟悉它)或其他东西。
你所描述一样计算着色器的声音给我。我不知道你想用什么其他类型的着色器。 –
@DietrichEpp我只是想使用片段着色器来做到这一点,而我刚刚听说过计算着色器。 –
片段着色器没有意义,因为您没有进行任何绘制。 –