Пиксели OpenGL, нарисованные с каждой горизонтальной парой - PullRequest
3 голосов
/ 12 января 2011

Я немного новичок в OpenGL, хотя я вполне уверен, что моя проблема заключается в используемом формате пикселей или в том, как генерируется моя текстура ...

Я рисую текстуру на плоском двумерном четырехугольнике, используя 16-битный формат пикселей RGB5_A1, хотя я не использую никакой альфы на данном этапе. У меня проблема в том, что каждая пара горизонтальных значений пикселей была поменяна местами .

То есть ... если позиции пикселей должны быть в этом порядке (предположим, изображение 8x2)

0 1 2 3 
4 5 6 7

вместо этого они нарисованы как

1 0 3 2
5 4 7 6

Или, более четко из этого изображения (ниже). Левый - это то, что я получаю ... Правый - это то, что я должен получить.

.

Вопрос в том ... Как я закончил с этим? Что-то не так с форматом пикселей? Маловероятно, поскольку все цвета выглядят правильными, и я бы ожидал, что все виды мерзости были бы вплоть до порядка байтов. Предложения с благодарностью.

Обновление : Оказывается, проблема была в моем исходном рендере. Интересно, что я полностью избежал этой проблемы, используя 32-битные текстуры (пока не пробовал 24-битные).

1 Ответ

0 голосов
/ 13 января 2011

Это может быть не связано, и вы нашли обходной путь, но это может быть связано с выравниванием распаковки OpenGL. Вы пробовали с помощью следующего звонка? Для указания выравнивания каждой строки изображения по 1 байту (по умолчанию 4).

glPixelStorei(GL_UNPACK_ALIGNMENT, 1);

...