Эй, я работаю над редактором карт для своей игры, и я пытаюсь преобразовать положение мыши в положение в игровом мире, представление настраивается с помощью gluPerspective
Хорошим местом для начала была бы функция gluUnProject
, которая принимает координаты мыши и вычисляет координаты пространства объекта. Взгляните на http://nehe.gamedev.net/data/articles/article.asp?article=13 для получения базового руководства.
ОБНОВЛЕНИЕ:
Вы должны включить буферизацию глубины, чтобы код в этой статье работал. Значение Z для координат мыши определяется на основе значения в буфере глубины в этой точке.
В коде инициализации убедитесь, что вы сделали следующее:
glEnable(GL_DEPTH);
Точка на экране представляет собой всю линию (бесконечный набор точек) в трехмерном пространстве.
Большинство людей, задающих вопросы, подобные вашему, действительно пытаются выбрать объект, щелкнув по нему. Если это то, что вам нужно, OpenGL предлагает режим выбора, который обычно более эффективен, чем попытки преобразовать координаты экрана в координаты реального мира.
Использовать режим выбора (обычно) довольно просто: вы начинаете с gluPickMatrix
, которую вы используете, чтобы указать маленькую рамку вокруг точки щелчка. Затем вы рисуете свою сцену в режиме выбора . Когда вы закончите, вместо того, чтобы рисовать что-либо, вы получите записи о том, что было бы нарисовано в указанном вами поле. Если память не изменяет, они располагаются в Z-порядке, поэтому первым в списке будет то, что отображалось бы на переднем плане (то есть то, что вы обычно хотите).