Может ли OpenGL запускаться не в полноэкранном режиме (вместо этого содержится в window или layout) в Android?

#android #layout #opengl-es #window

#Android #макет #opengl-es #окно

Вопрос:

Это может быть странный вопрос. Мне в основном интересно, есть ли способ использовать содержимое OpenGL, но не занимать им весь экран. Я хочу использовать OpenGL для рендеринга некоторых объектов, а ниже этого есть рабочие кнопки, которые определяют, что произойдет с указанными объектами.

Комментарии:

1. Да, конечно, вы можете это сделать, назовите свою платформу, пожалуйста, gui framework

Ответ №1:

Вместо того, чтобы использовать GLSurfaceViewActivity, создайте обычную Activity и внедрите GLSurfaceView в ViewGroup, где вам это нужно. Вероятно, вам понадобится какой-то другой клей, который GLSurfaceViewActivity генерирует автоматически.

Однако обратите внимание, что из-за совершенно разных механизмов рендеринга между Surfaces и другими представлениями вы можете обнаружить некоторые неожиданные проблемы с рендерингом. SurfaceView фактически будет «окном», через которое будет отображаться OpenGL, и другим обычным представлениям может быть разрешено отображаться над этим окном. Кроме того, неплохо убедиться, что GLSurfaceView является единственным SurfaceView в иерархии.

Комментарии:

1. Ценю понимание. Это будет единственный вид surface. В принципе, мне нужен способ последовательного отображения анимации при наличии рабочих текстовых представлений и кнопок. Просто пробую кучу вариантов, чтобы увидеть, что работает лучше всего, потому что я читал, что встроенные механизмы рисования были менее эффективными. (Моя анимация — это индикатор или быстрый набор в качестве примера).

2. Похоже, ваши потребности достаточно просты, чтобы вы могли добиться достаточной производительности от цикла перерисовки Handler.postDelayed (..), но только вы можете сказать наверняка.