OpenGL и макеты

Я использую OpenGL для отображения игрового представления в приложении для Android. Игра пошаговая, и я хочу добавить некоторые кнопки в интерфейс. Я бы предпочел использовать стандартные виджеты Android, структурированные в XML-сгенерированном макете (или, если нужно, жесткий код), и поместить представление OpenGL в его собственное окно как часть этого макета.

Итак, в связи с этим у меня есть 3 вопроса:

1: Возможно ли такое? Я сделал несколько полусердечных попыток, но до сих пор не повезло.

2: Является ли такая вещь целесообразной? Имеет ли это существенное снижение производительности, например, с использованием виджета homebrew на основе OpenGL?

3: Можно ли передавать конкретные аргументы экземплярам, ​​созданным в XML-макетах? Например, мое текущее представление OpenGL имеет три аргумента в его конструкторе; возможно ли мне вызвать этот конкретный конструктор с определенными параметрами, когда он является частью макета?

Ответ 1

Не только эти вещи возможны, они обычны! OpenGL SurfaceView - это еще один вид в Android, и вы можете сложить все, что хотите, поверх него. В приложении, которое я создаю, мы используем OpenGL, чтобы отображать интересные фоны, в то время как слой полностью перекрывает его. Нет более значительных проблем с производительностью, которые вы могли бы иметь с OpenGL самостоятельно. Вы можете использовать макеты xml или сгенерировать все ваши элементы ui программно или выполнить некоторую комбинацию из двух. Даже если вы хотите использовать xml для создания вашего ui, вы можете получить доступ к элементам и управлять ими на основе состояния.