扫描gltexture特定颜色的最快方法?

时间:2012-07-26 08:03:59

标签: opengl

假设我有一个纹理坐在视频内存中,隐藏在这个纹理内的某个地方可能是一个或多个具有特定颜色的像素。在c ++中,我想调用此gltexture上的函数来检查是否存在此颜色,只返回true或false。 最快的方式是什么?

1 个答案:

答案 0 :(得分:4)

我想最好的性能/简单比例是在CPU上保留副本并测试每个纹素,可选择使用SSE。

您也可以在OpenGL中执行此操作:

  • 创建与纹理相同大小的渲染目标
  • 在其中执行纹理的全屏渲染 - 也就是说,每个纹素将匹配渲染目标的一个片段。禁用任何花哨的纹理采样
  • 渲染时,使用着色器丢弃除了具有所需颜色的纹素之外的任何纹理元素
  • 使用遮挡查询计算渲染片段的数量。

我不确定这个的性能,但它可能会以最快的速度在GPU端获得。请注意,虽然速度很快,但此方法有滞后性:您通常只会在1或2帧后获得遮挡查询的结果(但您也可以忙等待)。