PMG

Форумы по созданию игр
Текущее время: 16 апр 2024 13:48

Часовой пояс: UTC + 3 часа [ Летнее время ]




Начать новую тему Ответить на тему  [ Сообщений: 19 ]  На страницу 1, 2  След.
Автор Сообщение
 Заголовок сообщения: Разрешение экрана и его влияние на изображение.
СообщениеДобавлено: 18 июл 2005 12:45 
Не в сети
Любитель
Аватара пользователя

Зарегистрирован: 09 окт 2004 17:19
Сообщения: 22
Откуда: Ostrava
Раньше я делал меню вот так:
рисовал кучу кнопок, накладывал на эти кнопки часть одной текстуры.
Я немного подумал, и вот что надумалось:
а не проще ли нарисовать один лишний прямоугольник чуть ближе к экрану и на него просто наложить ту самую текстуру с кнопочками. Ведь так быстрее программа работать будет(или всё же нет?)
Но вот возникла одна проблема, хотя я ещё даже не начал делать это меню.

Я создаю окно при помощи glut, сразу же разворачиваю на полный экран. Определяю разрешение экрана и отрисовываю всю сцену. При разрешениях 800х600 и 1024х768 я заметил некоторые различия :o .
Вот меня и интересует, если я наложу текстуру на дополнительный прямоугольник, будут ли кнопки точно под нужными частями текстуры??
Рисую я кнопки примерно так:
х и у - размеры экрана.
х/12 и у/8;
х/12 и у/9;
х/16 и у/9;
х/16 и у/8;
пусть всё это - четыре кординаты кнопки.
Таким же способом я делю и текстуру.

Я это спрашиваю, т.к. не очень хочу тратить время на эксперимент(Будет ли правильно работать моё меню).

Поэтому, если кто знает, подскажите, пожалуйста.

P.S. А про экспериментировать я смогу только через 2 недели ,так как с завтрашнего дня доступа к компьютеру не будет. Так что и ответа я могу подождать две недели.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: 18 июл 2005 16:10 
Не в сети
Гуру
Аватара пользователя

Зарегистрирован: 03 авг 2004 10:37
Сообщения: 2694
Если текстурные координаты кнопок и координаты их относительно расположения прямоугольника совпадут, то да. Ведь ты делаешь ортографическую проекцию?

_________________
С уважением, Сергей


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: 18 июл 2005 16:15 
Не в сети
Любитель
Аватара пользователя

Зарегистрирован: 09 окт 2004 17:19
Сообщения: 22
Откуда: Ostrava
Да, именно ортографическую проекцию и делаю.
Просто мне не давало покая расстояние между объектами сцены в различных разрешениях экрана.
Ну теперь значит всё буду делать как и задумал.

_________________
Самым большим доказательством существования разумной жизни во Вселенной является тот факт, что до сих пор никто не попытался с нами связаться 8)


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: 18 июл 2005 16:37 
Не в сети
Гуру
Аватара пользователя

Зарегистрирован: 03 авг 2004 10:37
Сообщения: 2694
Абсолютные координаты при разных разрешениях конечно не совпадут, но относительные будут одинаковы. Если натягивать текстуру на относительные размеры, то нет проблем. Если на абсолютные, то требуется пересчет.

Т.е. если выставить размер ортографической проекции по ширине/высоте экрана, то будет одно, если всегда держать их например 800x600 - то это другое.

_________________
С уважением, Сергей


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: 18 июл 2005 20:15 
Не в сети
Любитель
Аватара пользователя

Зарегистрирован: 09 окт 2004 17:19
Сообщения: 22
Откуда: Ostrava
Значит, ещё одна проблема.
Я выставлял размер ортографической проекции по ширине/высоте экрана(сначала делал окно на весь экран, а потом ф-циями GL-я получал высоту и ширину), но использовал только ширину, т.е. делал экран квадратным. Просто по другому(даже не помню сейчас точно, надо в программу лезть, а времени нету) были какие-то искажения.

_________________
Самым большим доказательством существования разумной жизни во Вселенной является тот факт, что до сих пор никто не попытался с нами связаться 8)


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: 19 июл 2005 11:24 
Не в сети
Гуру
Аватара пользователя

Зарегистрирован: 03 авг 2004 10:37
Сообщения: 2694
Хм, мне все-таки кажется, что можно сделать так:
1. Все расположения кнопок хранить в виртуальных единицах, например, от 0 до 1000%.
2. При выводе на экран пересчитывать в реальные пикселы.

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

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

Как думаешь?

_________________
С уважением, Сергей


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: 27 июл 2005 10:40 
Не в сети
Любитель
Аватара пользователя

Зарегистрирован: 19 июл 2005 15:57
Сообщения: 18
Откуда: City 17 :)
Ó ìåíÿ òîæå âîïðîñ ïî Ðàçðåøåíèþ.
Ìíå íóæíî ñîçäàòü îêíî:
CreateWindow(ÕÕÕ, ÕÕÕ, ÕÕÕ, x, y, ÕÕÕ, ÕÕÕ, ÕÕÕ, ÕÕÕ, ÕÕÕ, ÕÕÕ);
Äåëî â òîì ÷òî ÿ õî÷ó ÷òîáû îêíî ïîÿâëÿëîñü ïîñåðåäèíå ýêðàíà. Ýòî ìîæíî çäåëàòü ïðîñòîé ïîäãîíêîé êîîðäèíàò x,y, íî ïðè èçìåíåíèè ðàçðåøåíèÿ ýêðàíà, îêíî ïîÿâèòñÿ íå íà ñåðåäèíå ýêðàíà. Ýòè ïàðàìåòðû íóæíî ïîäñ÷èòûâàòü îòíîñèòåëüíî ðàçðåøåíèÿ ýêðàíà Windows.
Åñòü ëè ó ýòîé ôóíêèè ôëàãè êîòîðûå äàþò ýòî çíà÷åíèå èëè æå ìîæåò åñòü òàêàÿ ôóíêöèÿ, êîòîðàÿ âîçðàùàåò ðàçðåøåíèå ýêðàíà Windows? Âîáùåì êàê åãî ïîëó÷èòü? ÂîòÚ :b

_________________
Software is like sex - it's better when it's free /L. Torvalds/


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: 27 июл 2005 11:27 
Не в сети
Любитель
Аватара пользователя

Зарегистрирован: 19 июл 2005 15:57
Сообщения: 18
Откуда: City 17 :)
Âðîäè íàðûë ÷òî ìíå íàäî, åñëè êîìó ïîíàäîáèòñÿ òî:

Êîîðäèíàòû îêíà (õ,ó):
õ = (Äëèíà_ýêðàíà - Äëèíà_îêíà)/2
ó = (Øèðèíà_ýêðàíà - Øèðèíà_îêíà)/2

Äëèíà_ýêðàíà = GetSystemMetrics(SM_CXSCREEN);

Øèðèíà_ýêðàíà = GetSystemMetrics(SM_CYSCREEN);

_________________
Software is like sex - it's better when it's free /L. Torvalds/


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: 28 июл 2005 09:15 
Не в сети
Гуру
Аватара пользователя

Зарегистрирован: 03 авг 2004 10:37
Сообщения: 2694
Корректно, если в CreateWindow передать x или/и y равны 0, то тогда посредине, я так обычно делают, что-то навроде default ;)

_________________
С уважением, Сергей


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: 28 июл 2005 10:02 
Не в сети
Любитель
Аватара пользователя

Зарегистрирован: 19 июл 2005 15:57
Сообщения: 18
Откуда: City 17 :)
Íå ñîâñåì. Åñëè ïåðåäàòü 0,0 òî îêíî óäåò â ïåðâîé òî÷êå ýêðàíà, ñëåâà è ââåðõó.
À default, ýòî çàâèñèò îò òèïà îêíà.

_________________
Software is like sex - it's better when it's free /L. Torvalds/


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: 28 июл 2005 11:54 
Не в сети
Гуру
Аватара пользователя

Зарегистрирован: 03 авг 2004 10:37
Сообщения: 2694
Тогда можно задавать w&h ...

_________________
С уважением, Сергей


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: 10 авг 2005 01:09 
Не в сети
Любитель
Аватара пользователя

Зарегистрирован: 09 окт 2004 17:19
Сообщения: 22
Откуда: Ostrava
Цитата:
1. Все расположения кнопок хранить в виртуальных единицах, например, от 0 до 1000%.
2. При выводе на экран пересчитывать в реальные пикселы.

Я не понимаю этого. Может слегка подробнее?


Цитата:
Есть одна проблема, крайне сложная и не приятная. Если менять произвольно ширину/высоту экрана, то надо учитывать соотношение высоты/ширины, чтобы объекты сохранили свои пропорциональные размеры.

Меняться ширина/высота будут только из 800*600 в 1024*768 и наоборот. Окно всегда в полноэкранном режиме.


Цитата:
Если ты экран делаешь область вывода квадратной, а она отображается на прямоугольник, например, сильно вытянутый вниз, то ничего хорошего вроде как получиться не должно.

Как думаешь?

Я это понял. Я помню, что для чего-то делал экран квадратным, но не помню точно для чего(кажется что из-за искажения какого-то, а может как раз из-за меню.). А посмотреть в исходники больше не могу, так как их больше не существует. Я их со злости удалил :oops:


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: 10 авг 2005 08:34 
Не в сети
Гуру
Аватара пользователя

Зарегистрирован: 03 авг 2004 10:37
Сообщения: 2694
Например, делаешь функцию put_text(x,y,text);
x,y - задаешь от 0 до 100%, где 0 - левая граница экрана, а 100% правая.
Затем в этой функции:
x_put = x_virtual * wid_window_pixels / 100;
Т.е. пересчитываешь виртуальные единицы в реальные.

Пропорциональность вообще-то должна обеспечиваться OGL.

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

_________________
С уважением, Сергей


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: 29 сен 2005 14:27 
Не в сети
Новичок

Зарегистрирован: 28 сен 2005 20:07
Сообщения: 3
Доброго времени суток!
Я только только начал юзать GL (под BCB 6). Столкнулся с маленькой проблемой. Мне надо нарисовать длинную гнутую трубу. Сначала я строю модель, используя матрицу GL_MODELVIEW. Ну с этим я справляюсь :D . Дальше мне надо эту модель разместить в экране под заданы ракурсом (задается двумя углами).
Вот здесь то я и запнулся :? .
перехожу к матрице GL_PROJECTION и делаю необходимые повороты. Дальше, для того чтобы разместить изображение на экране надо пременить glOrtho. Но надо же знать получившиеся после поворота "границы" изображения - аргументы glOrtho!
Вопрос:
Можно ли найти эти границы (аргументы glOrtho) автоматически, средствами OpenGL?
Сейчас эту задачу я решаю "врукопашную", т.е. написал специальную процедуру для решения этой задачки, что муторно, громозко и неуверен что оптимально.
С уважением Владимир


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: 29 сен 2005 15:20 
Не в сети
Гуру
Аватара пользователя

Зарегистрирован: 03 авг 2004 10:37
Сообщения: 2694
Странно, обычно glOrtho задаются один раз, при создании окна или изменении его размеров. Дальше ты просто манипулируешь матрицей вида и модели, чтобы камера елозила по сцене и выбирала нужный ракурс. Причем, так как матрица одна и для камеры(вида) и для моделей, то как бы без разницы, что делать, или поворачивать как надо модель, или выставлять положение камеры.

_________________
С уважением, Сергей


Вернуться к началу
 Профиль  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 19 ]  На страницу 1, 2  След.

Часовой пояс: UTC + 3 часа [ Летнее время ]


Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 12


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения

Найти:
Перейти:  
cron
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
Русская поддержка phpBB