Як створити кнопку на openGL
Цікавить спосіб створення кнопки, наприклад, як це краще зробити. Потрібно, щоб при наведенні вона змінювала колір, а при натисканні відбувалася будь-яка подія. Наприклад, ми маємо намальований квадрат (glRect), і його потрібно повісити подію наведення на об'єкт і клік на об'єкт.
Олександр Старцев, рекомендую для початку розібратися, як влаштований конвеєр OpenGL.
Заведіть собі клас або структуру, що описують кнопку: координати, габарити та стан кнопки (натиснуто/не натиснуто). Створіть екземпляр, заповніть усі поля. У циклі відображення чистіть екран та виводьте кнопку на основі вищеописаних даних.
Перехопіть подію, натиснувши кнопку миші. Якщо про Windows - через повідомлення WM_LBUTTONDOWN , наприклад. Потім перевірте, чи клік попадає по вашій кнопці, порівнявши координати кліка з координатами і розмірами кнопки. Якщо так змініть стан на "натиснене". А за подією WM_LBUTTONUP аналогічно перевірте та змініть стан на "не натиснуто". У цей час оновленням зовнішнього вигляду старанно займатиметься цикл відображення.
PS. Можете піти нудним шляхом і взяти готову бібліотеку, яка зробить все це за вас (є варіанти з малюванням інтерфейсу на Flash, наприклад). Гуглити за ключовими словами "opengl ui framework".
Якщо це віндовс додаток, то миша постійно відправляє свої координати та стану кнопок як повідомлення в чергу програми. Думаю, вам не важко перехопити ці повідомлення і накласти їх на координати вашого прямокутника.
На C++ потрібно робити так:
Створюється абстрактний клас із обробником події, а від нього успадкуванням створюються класи графічних об'єктів. OpenGL передає повідомлення тому обробнику, об'єкт якого перебуває в координатах миші.Призначити надсилання повідомлень можна і за іншими подіями. Події краще відправляти у форматі вінди, щоб потім не морочитися з несумісністю.