Перевернуть изображение, используя одномерный массив символов - PullRequest
2 голосов
/ 11 июня 2010

У меня есть данные изображения, загруженные в память в виде одномерного массива.Так как я пытаюсь использовать OpenGL для рисования, и поскольку он читает снизу вверх, я хочу попробовать перевернуть элементы массива, прежде чем они будут отправлены в OpenGL.Может быть, есть способ заставить OpenGL читать сверху вниз?В любом случае, я попытался использовать несколько методов сортировки массивов, и они также перевернули изображение по горизонтали, что очень похоже на исходную проблему.Так можно ли перевернуть данные только одним способом?

Ответы [ 2 ]

4 голосов
/ 11 июня 2010

Так я могу перевернуть данные только одним способом?

Да, вы можете.
1D массив пикселей состоит из блоков image_height пикселей image_width. Один блок image_width представляет собой строку развертки или ряд пикселей. Сканирующие строки идут в последовательном порядке. Последняя строка сканирования начинается с [array_size - image_width], одна перед последней - [array_size - image_width * 2] и так далее. Первая строка сканирования начинается с нулевого индекса, вторая - с [image_width], третья с [image_width * 2] и так далее. Чтобы перевернуть, вы должны обмениваться данными в последней строке сканирования с первой строкой сканирования и продолжать идти по этому пути

Может быть, есть способ заставить OpenGL читать сверху вниз?

Нет, но вы можете перевернуть координаты текстуры на нарисованной вами сетке / геометрии.

P.S. Разве это так сложно понять? Вы можете легко угадать решение с ручкой / бумагой.

0 голосов
/ 11 июня 2010

Как заявил SigTerm, самый простой способ - это перевернуть текстурные корды.

только когда вы рендерили объект, измените координаты, которые вы вызываете, с помощью glTexCoord2f (). просто просто отрицать ширину.

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