Войти
ПрограммированиеФорумГрафика

Как делают графический интерфейс в играх ? (2 стр)

Страницы: 1 2
#15
6:02, 25 мар. 2019

bykabak
>
> В процентах - да, но как расстояние между элементами соблюдать при
> масштабировании ? 
делать размеры тоже в процентах? То-есть, вместо размещение кнопки на 0,0 с размером 192,108 - растянуть кнопку от 0.0 до 0.1, 0.0 до 0.1


#16
7:56, 25 мар. 2019

Дело в том, что экран имеет вполне конкретные размеры в int и пересчёт положения и размеров в процентах - float  вынудит налезать элементны друг на друга из-за погрешности при переводе в int.  Я так понял, что лучше HTML разметки ничего не придумали.

#17
(Правка: 8:58) 8:07, 25 мар. 2019

bykabak
Да причём тут вообще HTML, вокруг HTML куча своих костылей есть - флексбоксы, таблицы и.т.д
Для худа HTML очень неудобно использовать.

bykabak
> float  вынудит налезать элементны друг на друга из-за погрешности при переводе
> в int
Какая такая погрешность? Точность float уже большая, для UI тебе точность Currency подойдёт.
https://rextester.com/QXX75206

#18
(Правка: 11:01) 10:49, 25 мар. 2019

monobogdan,

Например : Элемент меню - кнопка имеет положение на форме меню  X,Y = 10, 10 - в пикселях экрана  и Width , Height 50, 20 - в пикселях экрана.    или в процентах = 100% = 1.0f  к разрешению 1920 * 1080

Следующая кнопка сидит ниже на 5 пикселей и имеет такие же Width , Height  соотвественно 50, 20.

При изменении разрешения экрана до 1366 * 768  какие будут X,Y и width, height этого элементов, чтобы меню выглядело так же, но уменьшилось в размерах ?  Как это пощитать с учётом, что минимальныэ размер системы = 1 пиксель экрана.  т.е.  я не смогу посадить элемент меню по координатам например : 9.45  , 9.45  нужно садить или на 10 или на 9 

В процентном соотношении размер экрана уменьшился до 71.14% по X и 71.1% по Y


как правильно пересчитать размеры и посадочные места каждого элемента ( с учётом расстоний между элементами ) чтобы пропорции и внешний вид меню не изменились ?

Например :  расстояние между кнопками было 5 пикселей  , а после пересчёта в новое разрешение будет 3.57 пикселя.  куда садить элемент на 3-й  или 4 -й пиксель ?  Да и относительно же него следующая кнопка... т.е. каждый элемент меню зависит от предыдущего .

#19
(Правка: 10:58) 10:58, 25 мар. 2019

bykabak
Ну для конкретно таких случаев есть контейнеры с докингом. У них единица это не пиксель или процент, а виджет, по которому идёт выравнивание. Поэтому высчитывать координаты не нужно. Тут по принципу схоже с HTML, да.

Изображение
#20
(Правка: 11:03) 11:02, 25 мар. 2019

Да, мне нужна такая система.  Или самому изобретать или использовать готовую. Чтобы меню в 3D приложении и HUD игры не зависел от разрешения экрана пользователя и пересчитывался автоматически.

#21
11:53, 25 мар. 2019

bykabak
> Я так понял, что лучше HTML
> разметки ничего не придумали.
Если ты так считаешь, то тогда запили поддержку html/css у себя в движке

#22
(Правка: 11:57) 11:57, 25 мар. 2019

Ну вот сижу и думаю о системе автоматического размещения элементов HUD в зависимости от разрешения экрана. 

#23
11:59, 25 мар. 2019

bykabak
алаймент?

#24
12:17, 25 мар. 2019

bykabak
Она пишется в пару сотен строчек.
Что - то в этом духе:

void CLinearLayout::Dock()
{
  CWidget* pPrevWidget = 0;
  CRect* pRect = new CRect(0, 0, pParent->GetWidth(), pParent->GetHeight());  

  while(CWidget* w = GetNextWidget())
  {
    w->SetPosition(pRect);
    pRect->h += w->GetHeight() + w->GetPaddingY() + GetPaddingY();
    pPrevWidget = w;
  }
}
#25
12:26, 25 мар. 2019

bykabak
посмотри раздел Адаптивный интерфейс, там все базовые техники рассматриваются. И нет разницы это десктоп приложение, веб страница или игровой GUI
https://mva.microsoft.com/ru/training-courses/-windows-10-15867?l… 7B_5805192797

#26
(Правка: 12:37) 12:35, 25 мар. 2019

monobogdan,

У меня своя система элементов меню и она передаётся массивом при создании объекта меню.  Нет пока иерархиии - разбиения формы меню на зоны или таблицу, нет привязки элементаов друг к дуругу или к месту. Есть чёткие координаты XY - левого верхнего угла элемента в форме меню и абсолютные размеры WH элемента.  вот от этого и отталкиваюсь...

#27
12:45, 25 мар. 2019

bykabak
> У меня своя система элементов меню и она передаётся массивом при создании
> объекта меню.  Нет пока иерархиии - разбиения формы меню на зоны или таблицу,
> нет привязки элементаов друг к дуругу или к месту. Есть чёткие координаты XY -
> левого верхнего угла элемента в форме меню и абсолютные размеры WH элемента. 
> вот от этого и отталкиваюсь...
у тебя должно быть что-то типа варианта позиционирования элемента в окне, на основании которого будут рассчитываться координаты, можно по примеру html сделать:
absolute, relative, fixed... Ну и ввести иерархию - без этого вообще никуда.
В описании интерфейса ты будешь задавать положение как-то так: Position: Relative, Top: 20, Left: 10. А потом в рантайме будешь высчитывать реальные координаты.

#28
(Правка: 13:31) 13:30, 25 мар. 2019

Нужно меню бить на зоны - блоки  как в HTML  и их уже двигать и растягивать или сжимать

Страницы: 1 2
ПрограммированиеФорумГрафика