Не работают глубинные цвета OpenGL ES2 в массиве вершин

#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:

Это просто отлично работает, проблема была где-то в другом месте моего кода.