OpenGL ES - изменение оттенка цветов в текстуре - PullRequest
1 голос
/ 13 октября 2009

Я разрабатываю простую 2D-игру в OpenGL ES для iPhone. Моя проблема в том, что я хочу визуализировать текстуру, используя разные оттенки. По сути, я хочу изменить оттенок цветов в текстуре, которую я рендерил. Простое изменение glColor не поможет, так как оно также влияет на части изображения без цвета. Есть идеи?

1 Ответ

5 голосов
/ 19 октября 2009

Спасибо за разъяснения, это было далеко от моего первоначального понимания. Обратите внимание, что текстура, которую вы предоставляете OpenGL ES, уже имеет оттенок, поэтому вы запрашиваете изменение существующего оттенка.

Во-первых, позвольте мне ответить на вопрос, как указано:

Давайте начнем с того, что должно произойти с текселями. Поскольку текстуры OpenGL хранятся как RGB, для преобразования оттенка текселя необходимо перейти в режим RGB-> HSL-> применить новый оттенок-> RGB. Вы можете найти фактическую математику для выполнения RGB-> HSL и обратного преобразования здесь . Как вы хотите выбрать новый оттенок, я полагаю, вам придется заполнить его.

Самый большой вопрос - , когда должно произойти преобразование. Что ж, конвейер OpenGL не позволит вам выполнить такое сложное преобразование при чтении текстуры (в любом случае, не в ES 1.1 - поможет ES 2.0 fragment shaders, но с высокой стоимостью). Таким образом, вам придется выполнять все преобразования вне конвейера текстурирования GL ES. В зависимости от того, как часто вам нужно менять оттенки, я советую либо делать это автономно (и хранить различные тематические текстуры), либо вычислять новые текстуры для новых оттенков по требованию непосредственно перед их загрузкой в ​​OpenGL ES.

Насколько я знаю, в GL ES 1.1 нет встроенных средств, которые бы помогли сделать это напрямую.

Теперь, делая шаг назад, я не уверен, что мешает вам разделить на 2 текстуры, если вы можете жить с 2 текстурами, применяемыми во время выполнения. Математика, на которую я указывал, отделяет насыщенность от яркости независимо от того, как была сгенерирована текстура (и теоретически, если я правильно понимаю ваш случай, оттенок должен быть постоянным). Делать вычисления в автономном режиме должно быть достаточно легко для любой входной текстуры?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...