【发布时间】:2014-07-15 21:19:34
【问题描述】:
假设我有几百个不同大小的相邻范围 0-100,101-300,301-1000,1001-2000 等。使用 HLSL/GLSL 找到给定整数属于哪个范围的最快方法是什么?
范围将存储在一个常量缓冲区中,我需要从顶点着色器中找到范围。
我目前使用的蛮力方法太慢了。
int index = 0;
int count = Lookup[index].count;
while (integer > count){
count += Lookup[index++].count;
}
return index;
有人有什么想法吗?
【问题讨论】:
-
我想到的第一件事:二分查找而不是线性查找怎么样?唯一的条件是您的范围已排序,并且速度会更快。 en.wikipedia.org/wiki/Binary_search_algorithm
-
这正是我所追求的。谢谢!发表您的评论作为答案,我会接受。
-
完成,很高兴为您提供帮助 :)