LINUX.ORG.RU

Центр системы координат OpenGL ES


0

1

Не подскажите ли где находится центр координат для OpenGL ES ?
До этого момента думал что как и в случае использования canvas это левый верхний угол, но почитав книгу по iOS наткнулся на строчку, в которой говорится что он в левом нижнем.
Гугление привело к мысли, что он в центре (http://forums.macrumors.com/showthread.php?t=1223976)

Так где же он на самом деле ?

★★

Последнее исправление: sacred (всего исправлений: 1)

Согласно разделу 2.12.1 спецификации OpenGL ES 2.0.25 координаты левого нижнего угла области вывода, её ширину и высоту (т.е., фактически, диапазон используемых оконных координат) можно задать при помощи функции glViewport(int x, int y, GLsizei w, GLsizei h). Ну а дефолтные значения этой функции зависят, очевидно, от реализации.

static_lab ★★★★★
()

Тут дело не во viewport, точнее не только в нем.
Ты задаешь точку в model space (некая произвольная система координат, удобная тебе для задания объекта).
Потом ты задаешь modelview matrix (некая трансформация твоего пространства, связанного с объектом, так, чтобы поместить его в пространстве с учетом того, что камера находится в точке (0, 0, 0) и смотрит в направлении -z. Эта матрица переводит точки из model space в eye space.
Потом ты задаешь projection matrix (это матрица, которая задает проекцию (перспективную или ортографическую). Эта матрица переводит объекты уже из eye space (в котором они находятся после трансформации с помощью modelview matrix) в clip space. Clip space в OpenGL это куб размером 2x2x2. Где по оси z значения это просто значения из depth buffer'а, а по x и y это значения в нормализованных экранных координатах. То есть x = -1 — левый край экрана, +1 — правый, y = -1 — низ, +1 — верх. Поэтому да, в OpenGL (в direct3d это не так) (0, 0) — это центр экрана.

Так как мой lib_astral.so подсказывает, что скорее всего у тебя ортографическая проекция и скорее всего MODELVIEW_MATRIX у тебя это едининая матрица (identity), то xy-координаты в object space просто равны xy-координатам в eye space и поэтому да, у тебя центр тоже в (0, 0).

За подробностями читать эту длинную книжку, если очень хочется вникнуть.
http://www.amazon.com/Real-Time-Rendering-Third-Tomas-Akenine-Moller/dp/15688...

anonymous
()

Что за дурацкий вопрос? Как камеру задашь, так и будет.

а по дефолту, да, в центре и viewport обычно задан так

http://ompldr.org/vMzZqNA - держи замечательную книжку по OpenGL ES 2.0, тут все достаточно хорошо описано, и как с камерами работать и как рисовать. Книга без привязки к какой-то определенной платформе.

Примеры из книги можно взять тут. Примеры для разных платформ, в том числе и для iPhone.

Если что, спрашивай, хотя я сам еще нуб в этом, но может чем помогу.

mono ★★★★★
()

Все зависит от проекции. Если сделаешь glOrthox (0, width << 16, height << 16, 0, 1, (2 << 16)), то получишь для выводимых точек привычные координаты, в которых левый верхний угол соответствует 0, 0 а правый - width, height.

note173 ★★★★★
()

Рекомендую почитать спеку по OGL ES.
Я читал по второй версии, там все очень доходчиво объяснено, как рассчитываются координаты точек и как они преобразуются в пиксели экрана.

trex6 ★★★★★
()
Ответ на: комментарий от mono

открыл книгу по разработке под ифон4, а там пишут - что начало координат - левый нижный угол. тут я немного офигел

sacred ★★
() автор топика
Ответ на: комментарий от mono

Выяснение отношений ИТТ! Вах-вах.

anonymous
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.