Перевернуть рисунок, нарисованный с помощью glVertex2f ()? - PullRequest
2 голосов
/ 13 февраля 2012

Я рисую некоторые точки в массиве, используя glVertex2f (), и мне нужно перевернуть его вверх дном.Я рисую это в glViewport (), так что я могу изменить его размер и переместить его.Но я не знаю, как его перевернуть.

Нужно ли использовать gluOrth2d ()?Я не до конца понимаю, в чем разница между gluOrth2d () и glViewport () и когда и когда использовать.

Ответы [ 2 ]

2 голосов
/ 13 февраля 2012

Вы перевернете свою сцену вертикально (вверх ногами) с помощью:

glScalef(1, -1, 1);

или переверните его по горизонтали с помощью:

glScalef(-1, 1, 1);
1 голос
/ 13 февраля 2012

glViewport () устанавливает область просмотра. То есть он устанавливает, в какую часть окна будет нарисована вся ваша геометрия. Обратите внимание, что он принимает целые числа (!!), а не числа с плавающей запятой только потому, что нам нужно быть точным в той части экрана, где будет выполняться рендеринг.

gluOrtho , как gluPerspective , glFrustrum e.t.c. используется для установки матрицы проекции .

Обратите внимание, что, хотя вы, возможно, и не используете gluOrtho2D () в своей программе, которую вы должны использовать, поскольку вам всегда нужно самим устанавливать перспективную проекцию.

РЕДАКТИРОВАТЬ : (исправлено с учетом указателей, указанных в комментариях)

Чтобы перевернуть всю сцену, предполагая, что это 2D, вы можете сделать это

glScalef(1,-1,1);

, который будет умножать текущую матрицу вида модели на матрицу масштабирования, эффективно переворачивая сцену вверх ногами.

Поскольку вам, похоже, нужна помощь в понимании использования матриц openGL, я хочу предоставить эти две ссылки, которые, я надеюсь, могут помочь:

Объясняет без математики

Объясняет немного больше математики

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