假设我有几百个不同大小的相邻范围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;
有人有什么想法吗?
答案 0 :(得分:1)
我认为使用二分搜索而不是线性搜索。这将提高从O(n)到O(log n)的速度。唯一的条件是您的范围已经排序,而且会更快。