比较纹理以匹配像素颜色

时间:2016-11-27 06:16:27

标签: opengl glsl

我正在探索一些GLSL并且有一些我想尝试实现的东西。情况如下:

假设我有一个纹理用于​​屏幕上显示的内容(例如1920x1080),另一个(功率为2,例如1024x1024)纹理。这两种纹理的每个像素都保证110%在颜色上是唯一的(一个纹理中没有2个像素是相同的颜色)。

是否可以将第二个(1024x1024)纹理与第一个(1920x1080)纹理进行比较,以确定第二个像素中的任何像素是否与第一个像素具有匹配的颜色?

如果这没有任何意义,请告诉我,我会尽力重新说出来。

1 个答案:

答案 0 :(得分:0)

您尝试做的是非常适合OpenGL着色器。通常,着色器应尽量减少每个纹理的样本数量,事实上,可能会限制它们允许使用的数量。为了完成您的建议,您需要为输入图像中的每个像素采样1024 * 1024次比较图像。这不会很好地扩展,并不是GPU面向的工作类型。

对于那项任务,你最好在CPU上做这件事。您可以先将第二个图像中的像素按红色排序,然后按绿色排序,再按蓝色排序。然后,对于输入图像中的每个像素,在排序列表中对该颜色进行二进制搜索。您可以多线程以获得更高的速度。但它似乎不适合GPU。