Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/126.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 使用GPU计算小于某个值的像素数_C++_Image_Directx_Gpu - Fatal编程技术网

C++ 使用GPU计算小于某个值的像素数

C++ 使用GPU计算小于某个值的像素数,c++,image,directx,gpu,C++,Image,Directx,Gpu,假设您有一个2D GPU纹理资源。使用GPU(使用DirectX,带或不带着色器)计算小于特定值的texel数的最佳方法是什么?您可以使用两个着色器来计算 将所有rgb值替换为1或0,具体取决于该值是否超过阈值 使用过滤器内核一步一步地减小纹理的大小,过滤器内核汇总纹理。 假设您的纹理大小为64x64。首先,将其减少到32x32,并将inputtexture的4个相关texel相加。重复此操作,直到得到4x4或8x8纹理,并将其锁定在CPU端,然后对其余纹理求和。结果就是你想要的texelcou

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

您可以使用两个着色器来计算

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

  • 使用过滤器内核一步一步地减小纹理的大小,过滤器内核汇总纹理。 假设您的纹理大小为64x64。首先,将其减少到32x32,并将inputtexture的4个相关texel相加。重复此操作,直到得到4x4或8x8纹理,并将其锁定在CPU端,然后对其余纹理求和。结果就是你想要的texelcount。您可以使用更大的内核(如4x4)来减少drawcalls,并将更多工作转移到着色器


  • 可以使用两个着色器计算此值

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

  • 使用过滤器内核一步一步地减小纹理的大小,过滤器内核汇总纹理。 假设您的纹理大小为64x64。首先,将其减少到32x32,并将inputtexture的4个相关texel相加。重复此操作,直到得到4x4或8x8纹理,并将其锁定在CPU端,然后对其余纹理求和。结果就是你想要的texelcount。您可以使用更大的内核(如4x4)来减少drawcalls,并将更多工作转移到着色器


  • 如果我错了,请纠正我,但在我的屏幕上,所有像素的大小都相同。也许只是因为我的电脑是苹果的产品?我的意思是像素RGB值,如果我错了,请纠正我,但在我的屏幕上,所有像素的大小都相同。也许只是因为我的电脑是苹果的产品?我指的是像素RGB值