Пятница, 29 Ноября 2024, 14:41

Приветствую Вас Гость

[ Новые сообщения · Игроделы · Правила · Поиск ]
  • Страница 1 из 1
  • 1
Как сделать user interface
clidiДата: Вторник, 10 Апреля 2012, 19:12 | Сообщение # 1
почетный гость
Сейчас нет на сайте
Как сделать user interface в игре, используя только opengl?
TimKruzДата: Вторник, 10 Апреля 2012, 20:31 | Сообщение # 2
старожил
Сейчас нет на сайте
Просто.
Хочешь сделать кнопку: выводишь на экран полигон с текстурой кнопки. Ждёшь и отлавливаешь нажатие кнопки на окне. Определяешь, где был сделан клик, следовательно, по какой кнопке кликали (если кнопки неподвижные - просто математически проверяешь координаты точки на вхождение в полигон или фигуру другой формы, если подвижные - нужно учитывать ещё и положение в каждый момент времени). Всё.
Можно ещё отлавливать отдельно нажатие и отжатие кнопки, чтобы сделать анимацию нажатия.
Чек-боксы или радио-кнопки работают также, как и кнопка, только клик просто меняет их текстуру. (радио-кнопки группируются)
Скроллы всякие лучше делать двумя отдельными полигонами - полоской и бегунком. Тут придётся отлавливать перемещение мыши при зажатой кнопке.
Коробки с текстом - просто пустой полигон, поверх которого выводятся полигоны с буквами, если по нему был сделан клик и нажата буквенная клавиша.
Курсор делается полигоном, привязанным к курсору (отслеживается любое перемещение), в то время как системный курсор выключен (есть такая системная функция).

Если твой язык программирования позволяет, всё это можно инкапсулировать в объекты, для удобства. Текст можно выводить отдельно, с помощью OpenGL-функций.




Сообщение отредактировал TimKruz - Вторник, 10 Апреля 2012, 20:34
horaxДата: Вторник, 10 Апреля 2012, 21:19 | Сообщение # 3
TheLord
Сейчас нет на сайте
clidi, OpenGL Game Development - код к книге (+ бонус). Там есть информация и по интерфейсу.



Dlaczego kiedy Polak pisze: "Oh baby!",
Amerykanin czyta coś całkiem inne?!! ©Horax
***
HVC IAM SVM


Сообщение отредактировал horax - Вторник, 10 Апреля 2012, 21:35
clidiДата: Воскресенье, 15 Апреля 2012, 12:58 | Сообщение # 4
почетный гость
Сейчас нет на сайте
А как систему координат одинаковую сделать? У курсора координаты окна и начинаются в левом нижнем углу, а у кнопки с текстурой координаты начинаются в центре экрана

Добавлено (15.04.2012, 12:58)
---------------------------------------------
Уже понял.

ТритонДата: Среда, 02 Мая 2012, 17:07 | Сообщение # 5
постоянный участник
Сейчас нет на сайте
Quote (TimKruz)
Просто.
Хочешь сделать кнопку: выводишь на экран полигон с текстурой кнопки. Ждёшь и отлавливаешь нажатие кнопки на окне. Определяешь, где был сделан клик, следовательно, по какой кнопке кликали (если кнопки неподвижные - просто математически проверяешь координаты точки на вхождение в полигон или фигуру другой формы, если подвижные - нужно учитывать ещё и положение в каждый момент времени). Всё.
Можно ещё отлавливать отдельно нажатие и отжатие кнопки, чтобы сделать анимацию нажатия.
Чек-боксы или радио-кнопки работают также, как и кнопка, только клик просто меняет их текстуру. (радио-кнопки группируются)
Скроллы всякие лучше делать двумя отдельными полигонами - полоской и бегунком. Тут придётся отлавливать перемещение мыши при зажатой кнопке.
Коробки с текстом - просто пустой полигон, поверх которого выводятся полигоны с буквами, если по нему был сделан клик и нажата буквенная клавиша.
Курсор делается полигоном, привязанным к курсору (отслеживается любое перемещение), в то время как системный курсор выключен (есть такая системная функция).

Если твой язык программирования позволяет, всё это можно инкапсулировать в объекты, для удобства. Текст можно выводить отдельно, с помощью OpenGL-функций.
Ну и ну. Зачем вообще повторять на ЖЛе дочерние форточки от мелкомягких? Уж если на ЖЛе, то крыса должна прямо по объектам кликать, а не через промежуточный уровень. Какие нафиг кнопки с чексами? Двери, свитки, бутылки, мечи и тому подобное, прямо по ним крысой. Если в свитке записан текст квеста, то придётся сделать скрол, от него ни куда не уйдёшь. Но остальное зачем копирожать? Не нужен ни какой чекобокс, а если уж приспичело сделать отмечалку, то делаем нормальный флажок в нужном месте, или на свитке появляющийся/исчезающий крестик. Кнопка годится только как кнопка дверного звонка, или если в кадр попадает клава-объект игрового мира, например, рояльная, на пульте от телевизора, на самом телевизоре, или ГГ забрёл в кабинет персонажа-компьютерщика. Можно также в некоторых свитках сделать строки, работающие, как кнопки.


Не всё так плохо, как оно есть на самом деле.

Сообщение отредактировал Тритон - Среда, 02 Мая 2012, 17:08
  • Страница 1 из 1
  • 1
Поиск:

Все права сохранены. GcUp.ru © 2008-2024 Рейтинг