2010-12-02 6 views
1

Я пытаюсь построить итеративную функцию в OpenGL ES. Массив ints обновляется тем, как часто данный пиксель попадает в итеративную функцию. Я хотел бы передать этот массив плотности в фрагментарный шейдер и использовать его для построения результата на простом квадрате, охватывающем весь экран.Передача массива int в фрагмент-шейдер

Мой вопрос: могу ли я передать этот массив непосредственно шейдеру в качестве формы и генерировать пиксели с помощью gl_FragCoord для просмотра плотности для данной позиции

или

я должен скорее используйте массив для создания текстуры с одним каналом, используя GL_LUMINANCE и передайте это шейдеру?

ответ

4

У вас ограниченное количество униформ, и индексирование может вызвать беспокойство, поскольку не все графические процессоры поддерживают не постоянное индексирование. Текстура 2D Nx1 не имеет ни одной из этих проблем, но возвращает значения в диапазон [0, 1]. Вы можете уменьшить эти значения, чтобы получить исходное целое число и использовать его.

+0

Почему бы не использовать 1D текстуру вместо 2D текстуры 1xN? BTW. Не могли бы вы указать, какие графические процессоры не поддерживают постоянную индексацию? Было бы полезно знать :) – Kos 2010-12-04 18:05:27