Прежде всего, спроецируйте координаты рукоятки / угла на плоскость камеры (эффективно преобразуя их в 2D-координаты на экране; нормализуйте это по размерам экрана.)
Вот несколько простых кодов для включения ортогонального / 2D-наложения:
void enable2D()
{
glMatrixMode(GL_PROJECTION);
glPushMatrix();
glLoadIdentity();
int wind[4];
glGetIntegerv(GL_VIEWPORT,wind);
glOrtho(0,wind[2],0,wind[3],-1,1);
glMatrixMode(GL_MODELVIEW);
glPushMatrix();
glLoadIdentity();
}
void disable2D()
{
glMatrixMode(GL_PROJECTION);
glPopMatrix();
glMatrixMode(GL_MODELVIEW);
glPopMatrix();
}
enable2D () кэширует текущие матрицы вида / проекции и заменяет матрицу проекции на одну, нормализованную для экрана (то есть ширину / высоту экрана), и восстанавливает единичную матрицу для просмотра модели.
После этого вызова вы можете выполнять вызовы glVertex2f (), используя координаты экрана / пикселя, что позволяет рисовать в 2D! (Это также позволит вам выполнить хит-тест, поскольку вы можете легко получить текущие пиксельные координаты мыши.)
Когда вы закончите, вызовите disable2D, чтобы восстановить старые матрицы моделей / проекций:)
Самая сложная часть - это вычисления, где хитбоксы падают на 2D-плоскость, и работа с наложением (если два проецируются в одно и то же место, которое выбрать при нажатии?)
Надеюсь, это помогло:)