Разница между GL_UNSIGNED_SHORT_4_4_4_4 и GL_UNSIGNED_SHORT_5_6_5 в OpenGL ES - PullRequest
2 голосов
/ 22 февраля 2012

Кто-нибудь знает разницу между типами данных GL_UNSIGNED_SHORT_4_4_4_4 и GL_UNSIGNED_SHORT_5_6_5 в OpenGL ES?

Ответы [ 3 ]

6 голосов
/ 26 февраля 2012

Это обе 16-битные текстуры.

При использовании 32-битной текстуры у вас есть 8 бит для каждого из цветовых компонентов плюс 8 бит для альфы, максимального качества и альфа-контроля, поэтому 8888.

С 16 битами всегда есть компромисс, если вам нужен только цвет, а не альфа, тогда используйте 565. Почему 565?Поскольку 16 битов не могут делиться равномерно на 3, и наши глаза лучше видят в зеленом спектре, поэтому лучше качество, если оставить оставшийся бит зеленым.Если вам нужна альфа, но ваши изображения не используют градиенты в альфа, используйте 5551, 5 бит для каждого цвета, 1 бит для альфы.Если ваше изображение имеет некоторый градиент альфа, то вы можете использовать 4444, 4 бита для каждого цвета и 4 бита для альфы.

4444 имеет худшее качество цвета, но в нем сохраняется некоторая альфа для смешивания, я использую это для моегоТекстуры шрифта, например, светлее 32-битных, и поскольку шрифты монокроматические, они хорошо вписываются в 4 бита.

4 голосов
/ 22 февраля 2012

Я не эксперт по OpenGL, но:

GL_UNSIGNED_SHORT_4_4_4_4 обозначает GL_UNSIGNED_SHORT_R_G_B_A, где каждое значение RGBA может иметь значение 4 бита каждое (ну, это 2 ^ 4)

GL_UN_IGN_S_S6GL_UNSIGNED_SHORT_R_G_B.Вы можете видеть, что здесь нет альфа-значения, так что это большая разница.Значения RGB также могут иметь большие значения, поскольку они составляют 5 6 и 5 бит соответственно.

0 голосов
/ 22 февраля 2012

Что ж, при использовании GL_UNSIGNED_SHORT_4_4_4_4 в качестве типа в команде спецификации пикселя (glTexImage2D или glReadPixels) предполагается, что данные располагаются в системной памяти как одно 16-битное значение на пиксель, с отдельными компонентами каждыйзанимая 4 последовательных бита.Он может использоваться только с форматом GL_RGBA.

. Принимая во внимание, что GL_UNSIGNED_SHORT_5_6_5 также принимает отдельные пиксели в качестве 16-битных значений, но красный и синий компоненты занимают по 5 бит каждый, а зеленый компонент имеет 6 бит(нет альфа-канала).Может использоваться только с форматом GL_RGB.

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