Преобразование положения мыши в мировое положение OpenGL - PullRequest
13 голосов
/ 22 июня 2010

Эй, Я работаю над редактором карт для своей игры, и я пытаюсь преобразовать позицию мыши в позицию в игровом мире, вид настраивается с помощью gluPerspective

Ответы [ 2 ]

7 голосов
/ 22 июня 2010

Хорошее место для начала - функция gluUnProject, которая берет координаты мыши и вычисляет координаты пространства объекта. Взгляните на http://nehe.gamedev.net/data/articles/article.asp?article=13 для базового учебника.

UPDATE:

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

В своем коде инициализации убедитесь, что вы делаете следующее:

glEnable(GL_DEPTH);
4 голосов
/ 22 июня 2010

Точка на экране представляет собой целую линию (бесконечный набор точек) в трехмерном пространстве.

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

Использование режима выделения (как правило) довольно просто: вы начинаете с gluPickMatrix, который используется для указания небольшого прямоугольника вокруг точки щелчка. Затем вы рисуете свою сцену в режиме выбора . Когда вы закончите, вместо того, чтобы рисовать что-либо, вы получите записи того, что было бы нарисовано в указанном вами поле. Если память служит, то они располагаются в Z-последовательности, поэтому первым в списке будет то, что было бы отображено передним краем (т. Е. Тем, которое вы обычно хотите).

...