Как прикрепить события к кубу, нарисованному с помощью OpenGL в области рисования gtk? - PullRequest
0 голосов
/ 26 января 2012

Я рисую куб, используя OpenGL в виджете области рисования gtk.Теперь я хочу прикрепить к кубу такие события, как «нажал», чтобы его можно было выбирать для перетаскивания и т. Д.

1 Ответ

5 голосов
/ 26 января 2012

OpenGL - это не граф сцены (* Гах * Я, устаю, пишу это снова, снова, снова и снова).Он рисует вещи.Вы даете ему кучу треугольников в трехмерном пространстве, и он проецирует их в 2D, рисует их по вашему желанию, а затем забывает об этом.

После того, как вы нарисовали свой куб, в OpenGL больше ничего нетэто идентифицировало бы это как последовательную структуру.Это полностью на вашей части.

Что вам нужно сделать, это:

  • сохранить представление сцены, которую вы нарисовали
  • установить обработчик событий мыши в области GTK GL
  • Используйте события мыши для преобразования координат обратного указателя в координаты сцены.По сути, вы будете «стрелять» лучами в сцену и проверять, где они попали.К счастью, проверка пересечения луча с кубом тривиальна.Вы можете немного ускорить процесс, сначала проверив, приблизился ли луч к лучу, используя тест на ограничивающую лучи сферу.

Следующие ключевые слова: «Выбор объекта OpenGL»


, чтобы его можно было выбирать для перетаскивания

Кстати: вы не можете просто перетаскивать «объекты» в OpenGL, потому что он не знает об «объектах»,в смысле геометрических структур.OpenGL определяет объекты, но это фактически абстрагированные источники данных, такие как текстуры или буферы вершинных и индексных данных.Ничего, что могло бы создать сцену, которой можно манипулировать.

Если вы измените что-то в сцене, с OpenGL вам придется полностью перерисовать это.

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