Цветовой индекс OpenGL для iPhone OpenGL ES 1.1? - PullRequest
1 голос
/ 30 ноября 2010

Можно ли использовать цветные палитры в openGL ES 1.1?

В настоящее время я занимаюсь разработкой игры, в которой есть игровые спрайты, и игровые спрайты должны иметь возможность менять цвета разных команд. Например, изменение цвета рубашки, но не цвета лица, что исключает простое вращение оттенка.

Возможно ли это, или это нужно будет реализовать вручную (напрямую изменяя данные текстуры)?

Ответы [ 2 ]

3 голосов
/ 30 октября 2012

Имейте в виду, что все, кроме не mipmapped GL_NEAREST, будет смешиваться между индексами палитры.В итоге я расширил палитровые текстуры в своем методе декомпрессии, прежде чем загружать их как BGRA32.(GLES 2.0)

2 голосов
/ 30 ноября 2010

Это не аппаратная функция MBX, но быстрая проверка gl.h для ES 1.x из iPhone SDK показывает, что GL_PALETTE4_RGB8_OES, GL_PALETTE8_RGBA8_OES и множество других доступны в качестве одной из констант дляперейдите к glCompressedTexImage2D, в соответствии с man-страницей здесь .Таким образом, вы можете передавать текстуры с помощью палитр, но я готов поспорить, что драйвер просто превратит их в RGB-текстуры на процессоре, а затем загрузит их в графический процессор.Я не верю, что Apple поддерживает эти типы сжатых текстур по любой причине, за исключением того, что они являются частью спецификации ES 1.x.

В ES 2.x вы можете делать все, что захотите,Вы можете легко загрузить палитру как одну текстуру (скажем, с пикселем в точке (x, 0), который является цветом для индекса палитры x), а текстуру палитры - как другую.Затем вы будете использовать два текстурных блока для выполнения той работы, которую, вероятно, мог бы выполнять при построении фрагментов, поэтому примите собственное суждение относительно того, можете ли вы себе это позволить.

...