OpenGL текстуры и порядковый номер - PullRequest
2 голосов
/ 02 марта 2011

Я использую glTexSubImage2D с GL_LUMINANCE и GL_UNSIGNED_BYTE для непосредственного отображения необработанных данных в оттенках серого с камеры - вместо того, чтобы перепаковывать их в растровое изображение RGB вручную.

Я хотел бы запустить камеру с более высоким разрешениемрежим, с 12 или 14 битами / пиксель.

Я могу сделать это просто, установив GL_SHORT, но камера возвращает данные с прямым порядком байтов, и моя реализация openGL, кажется, рисует их неправильно (на x86).

Есть ли простой способ сообщить openGL, что текстуры «неправильные»?Я хотел бы избежать ручной байтовой очистки данных только для отображения, потому что все другие функции ожидают данные с прямым порядком байтов.

1 Ответ

6 голосов
/ 02 марта 2011

Проверьте группу функций glPixelStore *.

Возможно, вам придется поиграть с GL_UNPACK_SWAP_BYTES или GL_UNPACK_LSB_FIRST, но дважды проверьте, что вы используете правильный GL_UNPACK_ALIGNMENT.По умолчанию выравнивание распаковки равно 4, но если вы используете один байт на пиксель (lum / ub), вам нужно установить его равным 1. Я столкнулся с этой проблемой совсем недавно, и мне потребовалось больше времени, чтобы выяснить,чем я хотел бы признать:)

...