Это называется "3D комплектация".Вы должны перевести экранные координаты в мировые координаты.Оттуда сделайте тест пересечения луча / объекта столкновения (ограничивающий прямоугольник?).Если они пересекаются, пользователь нажимает на них.
Вам нужно будет сделать немного больше, чтобы решить проблему с глубиной, например, найти первый пересечение каждого объекта, а затем выбратьодин с наименьшим (положительным) временем.
Если вы воспользуетесь Google для "3D-выбора", вы можете найти то, что ищете.
Вот учебник: http://nehe.gamedev.net/data/lessons/lesson.asp?lesson=32
Обратите внимание, что это не характерно для какой-либо формы ограничивающего объекта, будь то ограничивающий прямоугольник, многоугольник, кривая и т. Д. Вам просто нужно выяснить математику для теста пересечения для каждого типа объекта, который вы хотите поддерживать.
Редактировать:
Я не читал этот учебник до того, как связал его, я просто подумал, что NEHE - это место, где все классные ребята изучают OpenGL (правда, десять лет назад)....).
Вот что-то из FAQ по OpenGL о комплектации:
http://www.opengl.org/resources/faq/technical/selection.htm