gpt4 book ai didi

opengl - 如何使用GLSL计算指定颜色像素的数量?

转载 作者:行者123 更新时间:2023-12-02 21:03:16 25 4
gpt4 key购买 nike

我有一个灰度纹理(8000*8000),每个像素的值是一个ID(实际上,这个ID是片段所属的三角形的ID,我想用这个方法来计算有多少个三角形和哪些三角形在我的场景中可见)。

现在我需要计算有多少个唯一 ID 以及它们是什么。我想用 GLSL 来实现这一点,并最大限度地减少 GPU RAM 和 RAM 之间的数据传输。

我最初的想法是使用一个着色器存储缓冲区,将其绑定(bind)到GLSL中的一个数组,其大小为totalTriangleNum,然后迭代着色器中的ID纹理,将索引相等的数组元素加1到纹理中的 ID。

之后,读取OpenGL应用程序的缓冲区并得到我想要的。这是一种有效的方法吗?或者是否有一些更好的解决方案,例如计算着色器(我不熟悉它)或其他东西。

最佳答案

I want to using this method to calculate how many triangles and which triangles are visible in my scene)

鉴于您对数据的描述,让我稍微改一下:

您想要确定数据集中有多少个不同值,以及每个值出现的频率。

这通常称为 Histogram 。不幸的是(对你来说)生成直方图是 GPU 上无法轻松解决的问题之一。本质上,您必须将图像划分为越来越小的子图像(BSP、四叉树等),直到划分为执行评估的单个像素。然后回溯向上传播子直方图,本质上是对直方图执行插入或合并排序。

使用 GPU 生成直方图的研究仍在积极进行中,因此我建议您阅读已发表的学术著作(通常附有源代码)。关键词:直方图、GPU

这是 AMD GPU 研究人员完成的一篇很好的论文:https://developer.amd.com/wordpress/media/2012/10/GPUHistogramGeneration_preprint.pdf

关于opengl - 如何使用GLSL计算指定颜色像素的数量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37252257/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com