Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

OpenGL. Проецирование точки на экран.

23K
06 июля 2011 года
Spice
37 / / 10.07.2008
Приветствую, форумчане!

Суть вопроса.
Выбираю матрицу проекций (GL_PROJECTION), и провожу манипуляции с камерой.
Выбираю матрицу модели (GL_MODELVIEW), и провожу манипуляции с выводимым объектом. Для простоты возьмем точку.
С помощью мыши я могу вращать камеру как заблагорассудится. Кроме того сам объект (точка) может вращаться вокруг какой-нибудь точки. Таким образом по 2D экрану перемещается проекция точки и создается иллюзия ее перемещения в 3D. Все просто. Все довольны.

Теперь вопрос. Как мне в данный момент времени узнать, в какую точку экрана проецируется объект (точка)? Ну или если поставить вопрос математически, как определить координаты точки на экране, зная матрицу проекции и моделе-видовую матрицу? Ну и до кучи расстояние от этой точки до экрана?

Для чего это нужно? Для того, чтобы можно было сопоставить любой необходимой точке надпись, и чтобы при изменении позиции камеры и/или позиции этой точки, надпись следовала за ней.

Надеюсь сформулировал вопрос понятно. API - OpenGL. Жду ваших ответов, гуру)
9
06 июля 2011 года
Lerkin
3.0K / / 25.03.2003
Иными словами, вам (по минимуму) необходим перевод 3D-координат вершины OpenGL в экранные 2D-координаты окна?
23K
06 июля 2011 года
Spice
37 / / 10.07.2008
Решение - использовать функцию gluProject
23K
06 июля 2011 года
Spice
37 / / 10.07.2008
Lerkin, да вы меня правильно поняли.
9
06 июля 2011 года
Lerkin
3.0K / / 25.03.2003
Мои поздравления, и хороших впечатлений от предстоящего слайдшоу. Эти функции, есть вред.
23K
06 июля 2011 года
Spice
37 / / 10.07.2008
Есть приложение, требовательное к выводу графики (игра). Задача - подписать объекты. Стоит ли использовать в данном случаи именно функцию gluProject, или же можно/нужно выбрать другое решение? И если да, то какое?
9
06 июля 2011 года
Lerkin
3.0K / / 25.03.2003
Цитата: Spice
Есть приложение, требовательное к выводу графики (игра). Задача - подписать объекты. Стоит ли использовать в данном случаи именно функцию gluProject, или же можно/нужно выбрать другое решение? И если да, то какое?


1. Ручная работа с матрицами.
2. Вывод через шейдер (обработка преобразования координат).

Какая версия OpenGL используется?

23K
06 июля 2011 года
Spice
37 / / 10.07.2008
Цитата: Lerkin
1. Ручная работа с матрицами.


По-моему в данном случаи я рискую просто изобрести велосипед. Вы полагаете, что существующая функция реализована не самым оптимальным образом? Просто меня не покидает ощущение, что потратив время и разобравшись в ручной работе с матрицами я получу функцию с теми же входными параметрами и с полностью аналогичным функционалом.

Цитата: Lerkin
2. Вывод через шейдер (обработка преобразования координат).


Специалистом в работе с графикой не являюсь, шейдеры никогда не использовал. Можно поподробнее?

Цитата: Lerkin
Какая версия OpenGL используется?


Железо старенькое. Версия - 1.3

9
07 июля 2011 года
Lerkin
3.0K / / 25.03.2003
Цитата: Spice
По-моему в данном случаи я рискую просто изобрести велосипед. Вы полагаете, что существующая функция реализована не самым оптимальным образом? Просто меня не покидает ощущение, что потратив время и разобравшись в ручной работе с матрицами я получу функцию с теми же входными параметрами и с полностью аналогичным функционалом.


Ни в коем разе. Оптимизация вычислений на CPU, до недавнего времени, очень и очень помогала. Для вашей карточки, может стать панацеей. Но только для вашей.

Цитата: Spice

Специалистом в работе с графикой не являюсь, шейдеры никогда не использовал. Можно поподробнее?


Помилуйте. От этой информации интернеты лопаются.
Вкратце, замена некоторых участков конвейера OpenGL, на программируемые модули. А с версии 3.0, все варианты команд OpеnGL, типа glVertex и подобных, так же работа с матрицами в стиле glMatrixMode, и масса других, признаны deprecated. А с версии 3.1, вообще убраны. Только шейдеры, только массивы вершин, [COLOR="gray"]только небо и только Аллах.[/COLOR] ;)

Цитата: Spice

Железо старенькое. Версия - 1.3


Да, железо - ни к черту. Подумате об апгрейде. Даже мелкая GT220 за 1500 рублей, расширит возможности для изучения новых ништяков OpenGL. Не так уж и дорого, а сплошные плюсы.

Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог