OpenGL. Проецирование точки на экран.
Суть вопроса.
Выбираю матрицу проекций (GL_PROJECTION), и провожу манипуляции с камерой.
Выбираю матрицу модели (GL_MODELVIEW), и провожу манипуляции с выводимым объектом. Для простоты возьмем точку.
С помощью мыши я могу вращать камеру как заблагорассудится. Кроме того сам объект (точка) может вращаться вокруг какой-нибудь точки. Таким образом по 2D экрану перемещается проекция точки и создается иллюзия ее перемещения в 3D. Все просто. Все довольны.
Теперь вопрос. Как мне в данный момент времени узнать, в какую точку экрана проецируется объект (точка)? Ну или если поставить вопрос математически, как определить координаты точки на экране, зная матрицу проекции и моделе-видовую матрицу? Ну и до кучи расстояние от этой точки до экрана?
Для чего это нужно? Для того, чтобы можно было сопоставить любой необходимой точке надпись, и чтобы при изменении позиции камеры и/или позиции этой точки, надпись следовала за ней.
Надеюсь сформулировал вопрос понятно. API - OpenGL. Жду ваших ответов, гуру)
1. Ручная работа с матрицами.
2. Вывод через шейдер (обработка преобразования координат).
Какая версия OpenGL используется?
По-моему в данном случаи я рискую просто изобрести велосипед. Вы полагаете, что существующая функция реализована не самым оптимальным образом? Просто меня не покидает ощущение, что потратив время и разобравшись в ручной работе с матрицами я получу функцию с теми же входными параметрами и с полностью аналогичным функционалом.
Специалистом в работе с графикой не являюсь, шейдеры никогда не использовал. Можно поподробнее?
Железо старенькое. Версия - 1.3
Ни в коем разе. Оптимизация вычислений на CPU, до недавнего времени, очень и очень помогала. Для вашей карточки, может стать панацеей. Но только для вашей.
Специалистом в работе с графикой не являюсь, шейдеры никогда не использовал. Можно поподробнее?
Помилуйте. От этой информации интернеты лопаются.
Вкратце, замена некоторых участков конвейера OpenGL, на программируемые модули. А с версии 3.0, все варианты команд OpеnGL, типа glVertex и подобных, так же работа с матрицами в стиле glMatrixMode, и масса других, признаны deprecated. А с версии 3.1, вообще убраны. Только шейдеры, только массивы вершин, [COLOR="gray"]только небо и только Аллах.[/COLOR] ;)
Железо старенькое. Версия - 1.3
Да, железо - ни к черту. Подумате об апгрейде. Даже мелкая GT220 за 1500 рублей, расширит возможности для изучения новых ништяков OpenGL. Не так уж и дорого, а сплошные плюсы.