Android: возможно ли создать SurfaceTexture без SurfaceView?
Я хочу создатьТекстура поверхности с текстурой OpenGL, которой я могу управлять, в настройке, аналогичнойэтот ответ, (Цитируется здесь :)
Создайте текстуру через OpenGLПередайте эту текстуру конструктору новой SurfaceTexture.Дайте эту новую SurfaceTexture на камеру.Убедитесь, что вы используете OES_External (подробности см. В документации).Однако для создания текстуры OpenGL (как в шаге 1 ответа) требуетсяКонтекст EGL, который требует, чтобы EGLSurface был текущим, который требует SurfaceTexture. Кажется, что единственный способ создания контекста EGL - создать SurfaceView (или другое представление с SurfaceTexture) и использовать его для инициализации EGLSurface, а затем сделать EGLContext текущим.
Моя цель - создать EGLContext и сделать его текущим в фоновом потоке, чтобы выполнить некоторые закадровые вычисления для изображения предварительного просмотра камеры (в основном с использованием NDK). Я хочу создать библиотеку и сделать ее максимально независимой от пользовательского интерфейса. Два связанных вопроса:
На стороне Java, возможно ли создать EGLContext без предварительного создания SurfaceTexture?
На стороне NDK раньше был частный вызов API для создания собственных окон.android_createDisplaySurface()
, но это больше не работает, и хорошо, это частный API. Есть ли способ создать поверхность с помощью NDK?
Я совершенно новичок в использовании EGL, и я не понимаю, зачем вам нужен EGLSurface для того, чтобы EGLContext был актуальным. В iOS сначала можно создать EAGLContexts, а затем при необходимости можно создать кадровые буферы. При использовании EGL кажется, что вам всегда нужно собственное окно.