Добавление прослушивателя мыши к объекту в пространстве GL

Как часть игры, которую я пишу, у меня есть текстурированная плоскость земли, которая в настоящее время реализована в виде четырехугольника.

Мне нужно иметь возможность слушать щелчки мыши и указывать их координаты на плоскости земли.

Я могу легко реализовать прослушиватель, который возвращает координаты в пространстве просмотра. Однако точка обзора подвижна, поэтому пиксель в пространстве обзора не всегда соответствует одним и тем же координатам на плоскости земли.

Можно ли реализовать прослушиватель мыши для квадроцикла?

В противном случае, есть ли альтернативная реализация плоскости, которая позволит мне текстурировать плоскость и прослушивать события мыши.

Любые советы очень ценятся!


person Livagl    schedule 18.05.2011    source источник


Ответы (2)


OpenGL просто рисует что-то на экране. В частности, он рисует точки, линии, треугольники, четырехугольники и выпуклые плоские многоугольники. После того, как пиксели были установлены, OpenGL не имеет постоянства в отношении того, что он рисовал.

Термины, в которых вы думаете, называются графом сцены, но OpenGL таковым не является.

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

person datenwolf    schedule 18.05.2011

Первое, о чем я подумал, прочитав ваш вопрос, был (Выбор). Но так как у вас есть только один квадроцикл, вы не сможете определить позиции внутри квадроцикла.

Другим решением было бы решить эту проблему за рамками OpenGL и вычислить пересечение луча и четырехугольника. Однако для определения луча, идущего от точки обзора к сцене, вам все равно понадобится контекст OpenGL.

person thalador    schedule 18.05.2011