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 постоянных буфера имеют свои данные в том же формате, почему бы просто не иметь 1 постоянный буфер с массивом из трех структур, содержащихся внутри него?

+0

Данные имеют одинаковый макет, но используемые буферы будут различаться. Поэтому я не могу хранить все данные в одном буфере, не создавая новый буфер, который содержит объединенные данные в каждом кадре. –

Смежные вопросы