|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
Опции темы | Поиск в этой теме |
09.10.2011, 18:47 | #1 |
Участник клуба
Регистрация: 30.07.2009
Сообщений: 1,601
|
Растягивания выведенного на OpenGL изображения при широкоформатном разрешении
Добрый вечер, коллеги. В общем откладывал всегда я этот вопрос на потом, а теперь решил разузнать "что да как". Расскажу на примере. У меня разрешение монитора 1650 на 1050. Это равно 19 на 10. Если я выведу средствами OpenGL(на весь экран) простой квадрат, то он будет растянут, т.е. будет не квадрат, а прямоугольник. Как это можно исправить? Уменьшение координат glVertex2f() в GL_QUADS вручную не подойдет.
p.s. Что-то не могу я в своем предложении скрин сделать, надеюсь, мой рассказ вы поняли |
09.10.2011, 19:09 | #2 |
Форумчанин
Регистрация: 01.09.2009
Сообщений: 151
|
это делается при задании окна просмотра (если не ошибаюсь - команда называется glView). Зная размеры области просмотра можно получить отношение ширины к высоте и потом домножить ширину области воспроизведения на этот коэффициент.
|
10.10.2011, 07:12 | #4 |
Форумчанин
Регистрация: 01.09.2009
Сообщений: 151
|
Вот, нашёл пример.
glViewport( 0, 0, Width, Height ); // Указываем область вывода на канве glMatrixMode( GL_PROJECTION ); glLoadIdentity(); glOrtho(-5,5, -5,5, 2,12); // Задаём отображаемый куб gluLookAt(0,0,5, 0,0,0, 0,1,0); // Устанавливаем вид камеры (по 3-м точкам) glMatrixMode( GL_MODELVIEW ); Я ошибся с и именем функции и с их количеством. Имелись ввиду ф-ии glViewport и glOrtho. Первая задаёт область канвы на форме (или другом оконном компоненте), а вторая задаёт мировые размеры. Более подробно можно почитать у Краснова в его книге "OpenGL Графика в проектах Delphi". Там всё от самого начала, с примерами. |
10.10.2011, 15:56 | #5 | |
Участник клуба
Регистрация: 30.07.2009
Сообщений: 1,601
|
Цитата:
Спасибо. |
|
12.10.2011, 12:19 | #6 |
Форумчанин
Регистрация: 10.09.2009
Сообщений: 352
|
Я делал так (и это лучшее, на мой взгляд, решение):
Код:
|
14.10.2011, 14:49 | #8 | |
Форумчанин
Регистрация: 10.09.2009
Сообщений: 352
|
Цитата:
Код:
|
|
15.10.2011, 16:43 | #9 |
Участник клуба
Регистрация: 30.07.2009
Сообщений: 1,601
|
Спасибо, но мне хватило glOrtho. Именно она приводит мою программу к нужным результатам. Если изменить на более большее разрешение, то в вашем случае заполнится черным цветом, а мне нужно было чтобы становилось видно то, что раньше было за пределами окна. Еще раз повторю, что мне хватило последнего поста Greek9000. Этим я решил проблему.
Спасибо. |
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Не могу вывести часть изображения. OpenGL | fmonkey3105 | Gamedev - cоздание игр: Unity, OpenGL, DirectX | 2 | 02.07.2011 21:37 |
OpenGL, сохранение изображения в файл | Syn-McJ | C++ Builder | 0 | 02.03.2011 19:47 |
OpenGL. Деформация изображения. | BOBAH13 | Общие вопросы C/C++ | 2 | 11.11.2009 14:50 |
Вывод врагмента изображения на весь экран в OpenGL | LMan | Помощь студентам | 0 | 13.09.2009 17:51 |
Координаты формы при различном разрешении экрана | Fataller | Помощь студентам | 13 | 28.03.2009 10:51 |