Если вы выбираете 2D в 3D, вам нужно немного поиграть с матрицами и векторами.GlUnproject не существует для OpenGL ES 1.1, поэтому вы должны сделать некоторые математические самостоятельно.
Пересечение луча с объектом - это путь.Ответ Timmmms уже охватывает некоторые из них, но это еще не все.Идея состоит в том, чтобы создать луч в 3D из 2D координат.Для этого необходимы обратная матрица и матрица проекции.Когда у вас есть луч, вы можете использовать тест пересечения лучей по вашему выбору, и, конечно, вам нужно выбрать ближайший объект, как в пункте 4 Тиммма. Простые в использовании ограничивающие сферы и ограничивающие рамки, а в Интернете полно учебников по проверке пересечений.
Это руководство по комплектации предназначено для DirectX, но вы можете понять эту идею.Часть построения луча является наиболее важной.
Редактировать Android реализует свою собственную версию gluUnproject.Его можно использовать для создания луча, вызывая его для ближней и дальней плоскости (0 и 1) и вычитая результаты ближней плоскости из результатов дальней плоскости, чтобы получить направление луча.Происхождение луча - это место просмотра.Подробнее здесь .