2017-02-02 14 views
0

Я пытаюсь нарисовать 3D-объект на кадре предварительного просмотра камеры (Android). Должен ли я использовать два вида поверхности, один для предварительного просмотра камеры и другой GLSurfaceView для рисования. Представления должны быть синхронизированы, а частота кадров дисплея должна быть достаточно хорошей, чтобы обеспечить хороший пользовательский интерфейс. Поэтому в большинстве уроков рассказывается об использовании нескольких представлений. Альтернативная идея состоит в том, чтобы получить текстуру из предварительного просмотра камеры и объединить ее с 3D-объектом, который будет нарисован, чтобы получить соответствующее 2D растровое изображение. Какой метод будет лучше для повышения производительности?Android: Single SurfaceView vs multiple SurfaceView

P.S: Я буду использовать API-интерфейсы Java для OpenGL ES 2.0

ответ

1

Так как два вида поверхности увеличивает количество вызовов API в кадр и требуют прозрачностей, они будут медленнее.

Вам не нужны два вида поверхности для вашей цели.

  1. Отключить запись глубины.
  2. Извлечь предварительный просмотр камеры на двумерном квадрате, заполняющем экран.
  3. Включить запись глубины.
  4. Render 3D объект.

Это гарантирует, что ваши 3D-объекты будут визуализированы над предварительным просмотром камеры.

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