Добавление кнопки на экране OPENGL - PullRequest
3 голосов
/ 31 января 2012

Я создал вращающийся CUBE с помощью OPENGL в Android, теперь я хочу добавить слушателя для управления вращением куба, т. Е. Когда я нажимаю кнопку, CUBE должен начать вращаться, и наоборот. Как я могу добавить кнопка на экране OPENGL?

Ответы [ 2 ]

5 голосов
/ 31 января 2012

Здесь есть два варианта:

  1. Создайте макет, который включает в себя как GLSurfaceView, так и любые другие кнопки / настройки, которые вы хотите.Используйте стандартный OnClickListener для кнопки и попросите слушателя вызвать метод в вашем рендерере для выполнения поворотов.Это в значительной степени самый простой способ заставить это работать, но стиль кнопки будет меняться в зависимости от версии ОС и поставщика.Если вы хотите иметь больше контроля над кнопкой, вы можете попробовать другой вариант.
  2. Нарисуйте кнопку с помощью OpenGL.После рендеринга куба переключите матрицу проекции на ортогональную проекцию (glOrtho) с теми же размерами, что и на экране, и нарисуйте текстурированный прямоугольник с изображением кнопки (Вы также можете масштабировать изображение кнопки, как это делает Android, используя 9 прямоугольников).чтобы углы и края оставались четкими и просто масштабируйте внутреннюю часть изображения, которая обычно имеет градиентный или сплошной цвет).Вам нужно настроить рендерер так, чтобы он получал сенсорный ввод и просто проверял, что нажатая точка находится в пределах кнопки.Если это так, то вы можете вызвать метод, который обрабатывает ротацию.

Если вам нужна полноценная библиотека пользовательского интерфейса, я уверен, что есть несколько таких, которые существуют для OpenGL ES на Android, ибольшинство из них, вероятно, будут частью более крупных игровых движков, которые будут выполнять большую часть работы за вас.Если вам нужна только одна кнопка, я бы порекомендовал первый вариант, так как он самый простой.

0 голосов
/ 31 января 2012

Вы можете нарисовать объект Button (прямоугольник), который всегда остается перпендикулярным камере для визуальный эффект кнопки. Каждый раз, когда камера трансформируется, объект кнопки также должен быть относительно трансформирован.

Часть щелчка должна обрабатываться отдельно и тщательно, т.е. вам нужно направить луч из центра камеры и посмотреть, не пересекает ли он ваш 3D-объект кнопки

Также, если бы вы делали это на рабочем столе, вы бы искали библиотеки "overlay GUI", такие как CEGUI, что довольно хорошо http://www.cegui.org.uk/wiki/index.php/Main_Page или вы также можете использовать Navilibrary и SDL http://princeofcode.com/navilibrary.php

В случае Android вы можете изучить приведенный выше код библиотеки (с открытым исходным кодом) и попытаться получить идеи оттуда.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...