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

Ваш аккаунт

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

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

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

Меняется масштаб - только визуально

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


Ломаные линии рисуются в цикле следующим кодом.
glBegin(GL_LINES);
glVertex3f(masUch.Point[j].x, masUch.Point[j].y,0);
glVertex3f(masUch.Point[j+1].x, masUch.Point[j+1].y,0);
glEnd();

спасибо
8.2K
03 июня 2005 года
Akela
64 / / 13.05.2005
Каждый раз при изменении размеров окна нужно просто устанавливать новую матрицу проекции с отношением сторон, равным NewWindowWidth/NewWindowHeight.
289
06 июня 2005 года
Jeyson
207 / / 20.04.2000
Цитата:
Originally posted by Akela
Каждый раз при изменении размеров окна нужно просто устанавливать новую матрицу проекции с отношением сторон, равным NewWindowWidth/NewWindowHeight.



Спасибо за наводку, но нельзя ли немного подробнее, может даже маленький пример приведете или ссылку. Дело в том, что я полный новичок в этом деле. Если не трудно, конечно.
Если имеется ввиду
glViewport(0, 0, clientRect.right, clientRect.bottom);
То, эта функция вызывается в методе OnDraw(). А метод OnDraw() вызывается постоянно

8.2K
11 июня 2005 года
Akela
64 / / 13.05.2005
По событию OnResize нужно выполнять следующий код:
glViewport(0, 0, ClientRect.Width, ClientRect.Height);
glMatrixMode(GL_PROJECTION);
glLoadIdentity();
gluPerspective(fov, (ClientRect.Width / ClientRect.Height), znear, zfar);

fov-угол обзора по вертикали
znear-расстояние до ближней плоскости отсечения
zfar-расстояние до дальней плоскости отсечения
289
14 июня 2005 года
Jeyson
207 / / 20.04.2000
Я уже решил данную проблему малость по-другому. Но все-равно спасибо. Попробую Ваш метод.
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог