#colors #shader #opengl-es-2.0 #vertex-array
#Цвет #шейдер #opengl-es-2.0 #массив вершин
Вопрос:
Apple предлагает использовать тип данных GLubyte для цветовых данных на iOS, поэтому я пытаюсь заставить это работать. В результате я получаю, что все цветовые компоненты <255 полностью черные, и только компоненты цветов, для которых установлено значение 255, действительно имеют этот цвет.
Что я делаю: -Сохраняю цвет отдельного объекта в моем собственном классе цветов в глубинах (диапазон 0-255) -Передаю цвета шейдеру в массив атрибутов вершин с типом GLubyte (все еще диапазон 0-255) -Во фрагментном шейдере используйте цвет напрямую или разделите компоненты на 255, оба варианта не работают.
РЕДАКТИРОВАТЬ: это действительно работает, проблема была где-то еще в моем коде.
Комментарии:
1. При использовании универсальных атрибутов убедитесь, что вы установили флаг normalized в
glVertexAttribPointer
, чтобы ваши значения автоматически преобразовывались в [0,1].2. Передача цветов в виде глубин в диапазоне [0-255] и установка параметру normalized значения true дает те же результаты: все еще не работает?
Ответ №1:
Что Apple рекомендует использовать GLubyte
для атрибутов вершин? Я думаю, вы неверно истолковали этот намек. Что вы на самом деле хотите сделать, так это сохранить эти значения в текстуре в оттенках серого 256×1 ( GL_LUMINANCE
) и передать ее шейдеру как однородную. Это было бы действительно быстрее, чем использование массивов.
Ответ №2:
Это просто отлично работает, проблема была где-то в другом месте моего кода.