2014-07-11 2 views
0

0-100,101-300,301-1000,1001-2000 등의 인접한 크기가 수백 개가되는 것으로 가정합니다. 주어진 정수가 어느 범위에 속하는지 찾는 가장 빠른 방법은 무엇입니까? HLSL/GLSL을 사용하고 있습니까?HLSL/GLSL 정수의 범위를 찾으십시오.

범위는 상수 버퍼에 저장되며 정점 셰이더 내에서 범위를 찾아야합니다.

현재 사용하고있는 무차별 대입 방식은 너무 느립니다.

int index = 0; 
int count = Lookup[index].count; 
while (integer > count){ 
    count += Lookup[index++].count; 
} 
return index; 

누구나 아이디어가 있습니까?

+0

우선 올 어떻게 이진 검색 대신 선형 어떻습니까? 유일한 조건은 범위가 정렬되고 훨씬 더 빠를 것입니다. http://en.wikipedia.org/wiki/Binary_search_algorithm – Gnietschow

+0

그게 정확히 내가 한 것입니다. 감사! 대답으로 의견을 게시하고 동의 할 것입니다. –

+0

완료, 기쁩니다. :) – Gnietschow

답변

1

선형 대신 이진 검색을 사용한다고 가정합니다. 이것은 O (n)에서 O (log n)로 속도를 향상시킵니다. 유일한 조건은 범위가 정렬되고 훨씬 더 빠를 것입니다. 내 마음에

Wikipedia-Entry for binary search