| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > C/C++: Мультимедия, OpenGL/DirectX > Как сделать примитивное UI |
| Автор: darkAv 17.11.2009, 12:08 |
| Ребят подскажите пожалуйста как сделать примитивное UI в OpenGL фон я загрузил при помощи режима Ortho2D к примеру создать кнопку и сделать чтобы она была кликательная? |
| Автор: Static 17.11.2009, 12:18 |
| рисовать в 2D объект, натягивать на него текстуру, менять текстуру в зависимости от поступающих данных (событий мыши и т.п.) Самый простой вариант - квадами рисовать контролы. Т.е. каждый кадр проверяешь - где координаты мыши. Если они над элементом UI - меняем текстуру этого элемента на "подсвеченную" например. Если пришел клик от мыши И мышь над элементом UI - поменять текстуру на "нажатую" и вызвать нужную функцию.... Добавлено через 1 минуту и 30 секунд Если работал с чем-нить типа Qt или WxWidgets, можешь подсмотреть архитектуру у них. Или взять какой-нить готовый опенсорс GUI и подглядывать там. |
| Автор: darkAv 17.11.2009, 12:46 | ||
| а можна по подробней пожалуйста? Добавлено через 2 минуты и 40 секунд
всмысле обьясни пожалуйста как можна так сделать? |
| Автор: Static 17.11.2009, 14:31 |
Давай тогда начнем с того - что ты уже умеешь? Кроме "вывода фона". |
| Автор: darkAv 17.11.2009, 14:47 |
| я сделал окно в котором у меня создаеться прямоугольник в режиме ortho на весь экран и на него натягиваеться текстура |
| Автор: Static 17.11.2009, 14:59 |
| Сам сделал или просто скопировал откуда-то? Если сам - тогда в чем проблема сделать еще прямоугольников с другими текстурами и размерами? Если не сам - то надо разбираться, а не копипастить. Вот http://pmg.org.ru/nehe/index.html. |
| Автор: darkAv 17.11.2009, 15:02 |
| я по ним и разбираюсь Добавлено через 10 минут и 23 секунды прямоугольники я сделал с текстурой просто я не знаю как сделать ее кликательной |
| Автор: Static 17.11.2009, 15:34 |
| ок. У тебя же есть обработка событий мыши? "Кликательная" кнопка - это прямоугольник с тремя текстурами. Текстуры: "нормальная", "активная" и "нажатая". В зависимости от сообщения мыши эти текстуры надо менять. |
| Автор: darkAv 17.11.2009, 15:41 | ||
нет в этом и загвоздка я не знаю как ее сделать |
| Автор: Static 17.11.2009, 15:42 | ||||||
Если нет обработки событий мыши - смотри тот кусок кода, где
Там должны быть еще
При получении всех этих сообщений у тебя в переменной lParam будут координаты мыши
Там где звездочки - там должны быть нужные действия. Т.е. если мышь движется и ее координаты находятся внутри твоего прямоугольника-кнопки, то надо сменить текстуру кнопки на "активную". Если мышь нажата - сменить на "нажатую". Если кнопка мыши отпущена - сменить текстуру кнопки на "обычную". |
| Автор: darkAv 17.11.2009, 15:48 |
| спс за развернутый ответ. а если еше вопросы появяться можн в личку сообшения кидать? |
| Автор: Static 17.11.2009, 15:49 |
| Кидай конечно.. Я, правда, оперативности ответов не гарантирую. Хотя лучше бы все на форуме обсудить - может еще кому пригодится. |
| Автор: darkAv 17.11.2009, 16:02 |
| я нарисовал сумку как сделать чтобы поля были активными рисовать в каждой клетке полигон? |
| Автор: Static 17.11.2009, 16:04 |
| |
| Автор: darkAv 17.11.2009, 16:04 |
![]() Добавлено через 7 минут и 22 секунды вот для рпг( так что каждую секцию нужно отрисовывать поликами)? |
| Автор: Static 17.11.2009, 16:14 |
| ну да... каждый элемент прийдется рисовать... имхо, не с того конца ты за РПГ взялся... |
| Автор: darkAv 17.11.2009, 16:22 |
| я пока просто теорию изучаю Добавлено через 6 минут и 13 секунд а скажи плз как сделать свой курсор?( делаю полик накладываю текстуру скрываю оригинальный) а как сделать чтобы мой полик бегал за курсором? |
| Автор: Static 17.11.2009, 16:44 |
| в case WM_MOUSEMOVE меняешь координаты своего полика на координаты мыши. |
| Автор: darkAv 17.11.2009, 16:46 |
| а ф-цию мож примерную показать? |
| Автор: Static 17.11.2009, 16:57 |
| |
| Автор: darkAv 17.11.2009, 16:58 |
| ok и на этом спасибо |