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

Ваш аккаунт

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

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

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

оконные и мировые координаты

289
02 июня 2005 года
Jeyson
207 / / 20.04.2000
Здравствуйте. Пишу Программу, которая использует OpenGL и MFC (аналог AutoCad).
Проблема: при изменении размеров окна, изображение визуально изменяется по масштабу, хотя мировые координаты неизменны. Например квадрат на экране выглядит как прямоугольник, вытянутый по ширине (высота окна ведь меньше ширины при развороте на полный экран) Как быть? Надо чтобы при изменении размеров окна, картинка сохраняла масштаб не только координатный, но и визуальный.
Делал так:

glBegin(GL_LINES);
glVertex2f(-1.0f+masUch.Point[j].xEkr/(double)rect.right*2, 1.0f-masUch.Point[j].yEkr/(double)rect.bottom*2);
glVertex2f(-1.0f+masUch.Point[j+1].xEkr/(double)rect.right*2, 1.0f-masUch.Point[j+1].yEkr/(double)rect.bottom*2);
glEnd();

т.е. Брал экранные координаты и переводил их в мировые по таким формулам в процессе рисования линии. Тогда все нормально, но край экрана соответствует 1 или -1 мировой системы, т.е. при отдалении камеры (функция gluLookAt(...)), рисование происходит в пределах 1...-1 мировых координат не на всем экране.
Вопрос: как заставить программу рисовать в любой точке экрана (в мировых координатах ибо они бесконечны, что мне и надо) и не изменять масштаб по высоте и ширине при изменении размеров окна программы. Если окно очень маленькое, то изображение (например линия) должно быть видимо частично, а не подгоняться под размер окна. Т.е. аналог AutoCad. Использование gluUnProject(...) проблемы не решает.
спасибо.
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог