Как создать кнопку на openGL?

Рейтинг: 1Ответов: 1Опубликовано: 05.01.2015

Интересует способ создания кнопки, например, как лучше это сделать.
Нужно, чтоб при наведении она меняла цвет, а при нажатии происходило какое-либо событие. Например, у нас есть нарисованный квадрат (glRect), и него нужно повесить событие наведение на объект и клик на объект.

Ответы

▲ 7Принят

@Александр Старцев, рекомендую для начала разобраться, как устроен конвейер OpenGL.

Видеокарта не знает ничего ни о каких кнопках и тем более событиях. И почти не знает о квадратах. OpenGL главным образом занимается тем, что скармливает видеокарте списки координат вершин и дополнительные сведения о том, как их нарисовать. Т.е. все, что вам в данном случае позволяет библиотека это почистить экран и нарисовать квадрат. Дальше сами.

Заведите себе класс или структуру, описывающие кнопку: координаты, габариты и состояние кнопки (нажата/не нажата). Создайте экземпляр, заполните все поля. В цикле отрисовки чистите экран и выводите кнопку на основе вышеописанных данных.

Перехватите событие нажатия кнопки мыши. Если речь о Windows - через сообщение WM_LBUTTONDOWN, например. Затем проверьте, попадает ли клик по вашей кнопке, сравнив координаты клика с координатами и размерами кнопки. Если - да измените состояние на "нажато". А по событию WM_LBUTTONUP аналогично проверьте и измените состояние на "не нажато". В это время обновлением внешнего вида будет усердно заниматься цикл отрисовки.

PS. Можете пойти скучным путем и взять готовую библиотеку, которая сделает все это за вас (есть варианты с рисованием интерфейса на Flash, например). Гуглить по ключевым словам "opengl ui framework".