假设您有一个 2D GPU 纹理资源。使用 GPU(使用 DirectX,有或没有着色器)计算小于特定值的纹素数量的最佳方法是什么?
最佳答案
你可以用两个着色器来计算。
将所有 rgb 值替换为 1 或 0,具体取决于值是否超过阈值。
使用过滤器内核逐步减小纹理的大小,过滤器内核汇总纹素。 假设您的纹理大小为 64x64。首先,您将其缩小到 32x32,然后将输入纹理的 4 个相关纹素相加。重复直到您拥有 4x4 或 8x8 纹理并将其锁定在 CPU 端并将其余部分相加。结果是您想要的 texelcount。您可以使用更大的内核(如 4x4)来减少绘制调用并将更多工作转移到着色器。
关于c++ - 用GPU计算小于某个值的像素数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14779483/