Модераторы: Rickert, Alexeis, BorisVorontsov

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Как сделать примитивное UI 
:(
    Опции темы
darkAv
Дата 17.11.2009, 12:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 23
Регистрация: 13.10.2009

Репутация: нет
Всего: нет



Ребят подскажите пожалуйста как сделать примитивное UI в OpenGL фон я загрузил при помощи режима Ortho2D к примеру создать кнопку и сделать чтобы она была кликательная?
PM MAIL   Вверх
Static
Дата 17.11.2009, 12:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 185
Регистрация: 6.11.2008

Репутация: 1
Всего: 2



рисовать в 2D объект, натягивать на него текстуру, менять текстуру в зависимости от поступающих данных (событий мыши  и т.п.)
Самый простой вариант - квадами рисовать контролы.
Т.е. каждый кадр проверяешь - где координаты мыши. Если они над элементом UI - меняем текстуру этого элемента на "подсвеченную" например. Если пришел клик от мыши И мышь над элементом UI - поменять текстуру на "нажатую" и вызвать нужную функцию....

Добавлено через 1 минуту и 30 секунд
Если работал с чем-нить типа Qt или WxWidgets, можешь подсмотреть архитектуру у них. Или взять какой-нить готовый опенсорс GUI и подглядывать там.
--------------------
Я не настолько безнадежен, как кажется...
PM MAIL   Вверх
darkAv
Дата 17.11.2009, 12:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 23
Регистрация: 13.10.2009

Репутация: нет
Всего: нет



а можна по подробней пожалуйста?

Добавлено через 2 минуты и 40 секунд
Цитата(Static @ 17.11.2009,  12:18)
рисовать в 2D объект, натягивать на него текстуру, менять текстуру в зависимости от поступающих данных (событий мыши  и т.п.)
Самый простой вариант - квадами рисовать контролы.
Т.е. каждый кадр проверяешь - где координаты мыши. Если они над элементом UI - меняем текстуру этого элемента на "подсвеченную" например. Если пришел клик от мыши И мышь над элементом UI - поменять текстуру на "нажатую" и вызвать нужную функцию....

всмысле обьясни пожалуйста как можна так сделать?
PM MAIL   Вверх
Static
Дата 17.11.2009, 14:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 185
Регистрация: 6.11.2008

Репутация: 1
Всего: 2



Цитата(darkAv @  17.11.2009,  11:46 Найти цитируемый пост)
а можна по подробней пожалуйста?

Давай тогда начнем с того - что ты уже умеешь? Кроме "вывода фона".
--------------------
Я не настолько безнадежен, как кажется...
PM MAIL   Вверх
darkAv
Дата 17.11.2009, 14:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 23
Регистрация: 13.10.2009

Репутация: нет
Всего: нет



я сделал окно в котором у меня создаеться прямоугольник в режиме ortho на весь экран и на него натягиваеться текстура
PM MAIL   Вверх
Static
Дата 17.11.2009, 14:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 185
Регистрация: 6.11.2008

Репутация: 1
Всего: 2



Сам сделал или просто скопировал откуда-то? Если сам - тогда в чем проблема сделать еще прямоугольников с другими текстурами и размерами?
Если не сам - то надо разбираться, а не копипастить. Вот полезный ресурс.
--------------------
Я не настолько безнадежен, как кажется...
PM MAIL   Вверх
darkAv
Дата 17.11.2009, 15:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 23
Регистрация: 13.10.2009

Репутация: нет
Всего: нет



я по ним и разбираюсь

Добавлено через 10 минут и 23 секунды
прямоугольники я сделал с текстурой просто я не знаю как сделать ее кликательной
PM MAIL   Вверх
Static
Дата 17.11.2009, 15:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 185
Регистрация: 6.11.2008

Репутация: 1
Всего: 2



ок.
У тебя же есть обработка событий мыши?
"Кликательная" кнопка - это прямоугольник с тремя текстурами. Текстуры: "нормальная", "активная" и "нажатая". В зависимости от сообщения мыши эти текстуры надо менять.
--------------------
Я не настолько безнадежен, как кажется...
PM MAIL   Вверх
darkAv
Дата 17.11.2009, 15:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 23
Регистрация: 13.10.2009

Репутация: нет
Всего: нет



Цитата(Static @ 17.11.2009,  15:34)
ок.
У тебя же есть обработка событий мыши?

нет в этом и загвоздка я не знаю как ее сделать
PM MAIL   Вверх
Static
Дата 17.11.2009, 15:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 185
Регистрация: 6.11.2008

Репутация: 1
Всего: 2



Если нет обработки событий мыши - смотри тот кусок кода, где
Код

switch (uMsg)
{
case ....
}

Там должны быть еще
Код

case WM_MOUSEMOVE: //мышь двигается
***
break;

case WM_LBUTTONDOWN: //нажата левая кнопка
***
break;

case WM_LBUTTONUP: //отпущена левая кнопка
***
break;


При получении всех этих сообщений у тебя в переменной lParam будут координаты мыши
Код

mouseX = LOWORD(lParam);
mouseY = HIWORD(lParam);

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


Это сообщение отредактировал(а) Static - 17.11.2009, 15:44
--------------------
Я не настолько безнадежен, как кажется...
PM MAIL   Вверх
darkAv
Дата 17.11.2009, 15:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 23
Регистрация: 13.10.2009

Репутация: нет
Всего: нет



спс за развернутый ответ. а если еше вопросы появяться можн в личку сообшения кидать?
PM MAIL   Вверх
Static
Дата 17.11.2009, 15:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 185
Регистрация: 6.11.2008

Репутация: 1
Всего: 2



Кидай конечно.. Я, правда, оперативности ответов не гарантирую.
Хотя лучше бы все на форуме обсудить - может еще кому пригодится.
--------------------
Я не настолько безнадежен, как кажется...
PM MAIL   Вверх
darkAv
Дата 17.11.2009, 16:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 23
Регистрация: 13.10.2009

Репутация: нет
Всего: нет



я нарисовал сумку как сделать чтобы поля были активными рисовать в каждой клетке полигон?
PM MAIL   Вверх
Static
Дата 17.11.2009, 16:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 185
Регистрация: 6.11.2008

Репутация: 1
Всего: 2



 smile какую сумку?
--------------------
Я не настолько безнадежен, как кажется...
PM MAIL   Вверх
darkAv
Дата 17.11.2009, 16:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 23
Регистрация: 13.10.2009

Репутация: нет
Всего: нет



user posted image

Добавлено через 7 минут и 22 секунды
вот для рпг( так что каждую секцию нужно отрисовывать поликами)?
PM MAIL   Вверх
Ответ в темуСоздание новой темы Создание опроса
Вы можете найти полезным что...
Alexeis
Rickert
  • Английская документация по DirectX лежит где-то здесь.
  • Английская документация по OpenGL лежит где-то там.
  • Гейм-дев у нас обсуждают где-то тут

Ждём вас! С уважением, Alexeis, Rickert.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Мультимедия, OpenGL/DirectX | Следующая тема »


 




[ Время генерации скрипта: 0.1104 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.