Я хочу отправить список значений в шейдер фрагмента. Это, возможно, большой (пару тысяч наименований) список одноточечных поплавков. Фрейд-шейдер нуждается в произвольном доступе к этому списку, и я хочу обновить значения из ЦП на каждом кадре.
Я рассматриваю свои варианты того, как это можно сделать:
-
Как однородная переменная типа массива ( "равномерный float x [10];" ). Но, похоже, здесь есть ограничения, на моем графическом процессоре отправка более нескольких сотен значений происходит очень медленно, и мне придется жестко закодировать верхний предел в шейдере, когда я бы предпочел изменить его во время выполнения.
-
Как текстура с высотой 1 и шириной моего списка, затем обновляйте данные с помощью glCopyTexSubImage2D.
-
Другие методы? В последнее время я не соблюдал все изменения в спецификации GL, возможно, существует какой-то другой метод, специально предназначенный для этой цели?