Шейдеры и константы OpenGL

Мне нужно получить доступ к набору постоянных значений в моем шейдере геометрии GLSL. Я пробовал так:

const int lookup[HUGE_NUMBER] = int[HUGE_NUMBER](1,32,...)

Это работает... для некоторого оборудования. На картах ATI я получаю предупреждения о том, что размер моего шейдера геометрии может привести к снижению производительности (звучит разумно). На других картах (NV) шейдер не слинкуется из-за нехватки памяти. Определение константных массивов кажется неподдерживаемым хаком.

Так что же делать? Я читал о «постоянных буферах» в конвейере DirectX. Есть что-нибудь подобное? Или я должен использовать текстуры?


person Hugo    schedule 16.03.2011    source источник
comment
У вас есть причина не использовать текстуры? Они предназначены для использования в качестве предпочтительной таблицы поиска графического процессора.   -  person Ben Voigt    schedule 17.03.2011


Ответы (1)


Вы можете использовать по крайней мере любой из следующих интерфейсов:

  1. Текстура
  2. Унифицированный буферный объект
  3. Буфер текстуры
person kvark    schedule 16.03.2011