HLSL / GLSL查找整数范围

时间:2014-07-11 15:25:40

标签: glsl hlsl

假设我有几百个不同大小的相邻范围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;

有人有什么想法吗?

1 个答案:

答案 0 :(得分:1)

我认为使用二分搜索而不是线性搜索。这将提高从O(n)到O(log n)的速度。唯一的条件是您的范围已经排序,而且会更快。

Wikipedia-Entry for binary search