c++ - 用GPU计算小于某个值的像素数

标签 c++ image directx gpu

假设您有一个 2D GPU 纹理资源。使用 GPU(使用 DirectX,有或没有着色器)计算小于特定值的纹素数量的最佳方法是什么?

最佳答案

你可以用两个着色器来计算。

  1. 将所有 rgb 值替换为 1 或 0,具体取决于值是否超过阈值。

  2. 使用过滤器内核逐步减小纹理的大小,过滤器内核汇总纹素。 假设您的纹理大小为 64x64。首先,您将其缩小到 32x32,然后将输入纹理的 4 个相关纹素相加。重复直到您拥有 4x4 或 8x8 纹理并将其锁定在 CPU 端并将其余部分相加。结果是您想要的 texelcount。您可以使用更大的内核(如 4x4)来减少绘制调用并将更多工作转移到着色器。

关于c++ - 用GPU计算小于某个值的像素数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14779483/

相关文章:

directx - 以编程方式创建 directx 11 纹理,三种不同方法的优缺点

c++ - 错误 C2678 : binary '>>' : no operator found which takes a left-hand operand of type 'std::basic_istream<_Elem,_Traits>'

c++ - 重复的 typedef - 在 C 中无效但在 C++ 中有效?

图像上的 jQuery 单击事件仅触发一次

c++ - 如何在 DirectX 中初始化 XMVECTOR?

java - 使用 Java 在其他 OpenGL/DX 应用程序之上绘制

c++ - Qt/C++ : Getting the data at a certain cell in a QTableView

c++ - C++中的自动构造函数生成?

image - pict 中的 hb-append vs hbl-append 和 ht-append vs htl-append

swift - 第一次使用带有 SDWebImage 的 CKAsset - 无法将数据转换为 URL