2014-07-23 2 views
0

내 셰이더에 데이터 cbuffer1, cbuffer2, cbuffer3 등으로 가득 찬 상수 버퍼가로드되어있는 경우. 런타임에 특정 상수 버퍼에 동적으로 액세스 할 수있는 방법이 hlsl에 있습니까? 이런 식으로 뭔가 ...동적으로 상수 버퍼 선택

cbuffers[1].MyValue 

이 아니면 ... 그것은 늘 잘 수행하는 것 같다

if(index == 0){ 
    return cbuffer0.MyValue; 
} else if(index == 1){ 
    return cbuffer1.MyValue; 
} else if(index == 2){ 
    return cbuffer2.MyValue; 
} 

이 같은 성명 경우 대규모을 수있는 유일한 방법입니다.

답변

0

3 개의 상수 버퍼 모두 데이터가 동일한 형식으로 배열 된 경우 왜 그 안에 3 개의 구조체 배열이 포함 된 1 개의 상수 버퍼가 없습니까?

+0

데이터는 동일한 레이아웃이지만 사용되는 버퍼는 다양합니다. 따라서 각 프레임에 결합 된 데이터가 포함 된 새 버퍼를 만들 필요없이 모든 데이터를 단일 버퍼에 저장할 수 없습니다. –