2010-06-06 3 views
7

У меня есть сцена OpenGL с верхней левой системой координат. Когда я glScale, он масштабируется от (0,0) вверху слева. Я хочу, чтобы он увеличивался с координаты мыши (относительно кадра OGL). Как это делается? БлагодаряАлгоритм увеличения мыши (OpenGL)

ответ

10

Я считаю, что это может быть сделано в четыре этапа:

  1. Find х и у координаты мыши, используя любые функционирующие системы кадрирования (т.е. GLUT или SDL) имеет для этого, и использовать gluUnProject, чтобы получить координаты объекта, соответствующие этим окна координаты
  2. Перевести на (х, у, 0), чтобы положить начало в этих координатах
  3. Масштаб по нужному вектору (I, J, K)
  4. Перевести на (- x, -y, 0), чтобы вернуть начало в начало l eft
3

Я сделал плавное увеличение с использованием glortho. Скелет моего раствора

glortho (начальное окно просмотра х, у & размера)
glcalllist (мой список отображения)
визуализации
.
.
цикл, чтобы постепенно перейти к окончательным координатам/размеру viewrport. Реализовать ваши требования времени и FPS
.
.
glortho (окончательный видовой экран х, у & размера)
glcalllist (мой список отображения)
визуализации

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

Смежные вопросы