Вам необходимо привести положение мыши в мир и преобразовать его в координаты мирового пространства, которые затем проверяются на предмет различных объектов.Возможно, вы сможете найти библиотеку, которая сделает это за вас, я знаю, что OpenGL поддерживает выбор, и большинство упаковщиков предлагают расширенные функции для этого, но принцип таков:
Найти координаты мыши в окне.Используя эти координаты, направьте луч (независимо от того, используете ли вы луч в системе или просто делаете похожую математику, здесь нет ничего особенного) в мир.Вы будете использовать текущую матрицу вида (угол и положение камеры), чтобы вычислить направление и начало луча.Используя этот луч, проверьте свои объекты, их ограничивающие рамки или геометрию (в зависимости от того, что вы выберете), чтобы найти объект.Используя координаты пересечения, найдите объект, который находится в этом месте.
Вы также можете использовать буфер глубины для этого очень легко, если ваша сцена относительно статична.Просто выполните рендеринг с текстурой глубины, установленной в качестве буфера Z, затем используйте глубину, положение мыши и матрицу вида, чтобы найти точку пересечения.
Может быть возможно сделать это в обратном порядке, то есть сопоставить каждыйвозражать против соответствующих координат экрана, но вы, вероятно, столкнетесь с проблемами, связанными с сортировкой по глубине и перекрытием областей.Кроме того, это может быть излишне медленным отображением каждого объекта в области окна каждого кадра.