Алгоритм увеличения масштаба мыши (OpenGL) - PullRequest
7 голосов
/ 06 июня 2010

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

Ответы [ 2 ]

10 голосов
/ 06 июня 2010

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

  1. Найдите координаты мыши x и y, используя для этого любую функцию, которую ваша оконная система (например, GLUT или SDL), и используйте gluUnProject, чтобы получить координаты объекта, соответствующие этим координатам окна
  2. Переведите на (x, y, 0), чтобы указать начало координат в этих координатах
  3. Масштабирование по вашему желаемому вектору (i, j, k)
  4. Перевести на (-x, -y, 0), чтобы вернуть начало координат вверху слева
3 голосов
/ 06 июня 2010

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

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

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

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