Я выполняю видеоэффект, требующий двухпроходного рендеринга (текстуру нужно передавать через несколько программ шейдеров). Прикрепление SurfaceTexture к GL_TEXTURE_EXTERNAL_OES, которое передается в конструкторе, похоже, не является решением, так как отображаемый результат отображается только один раз.Android: Прикрепить SurfaceTexture к FrameBuffer
Одно из решений, о котором я знаю, - это то, что первый рендеринг можно сделать с помощью FrameBuffer, а затем полученную текстуру можно отобразить там, где она фактически отображается.
Однако кажется, что SurfaceTexture необходимо прикрепить к тексту GL_TEXTURE_EXTERNAL_OES, а не к FrameBuffer. Я не уверен, есть ли обход вокруг этого, или если есть другой подход, который я должен принять.
спасибо.
Рамка для фотоаппарата переходите в плоскость поверхности, но какой именно формат рамки изображения? Когда я рисую изображение на поверхность MediaCodec, почему кодировщик может кодировать кадр без проблемы с форматом? – dragonfly
Системный интегратор должен обеспечить взаимодействие графических и видеокомпонентов. Android не указывает один формат, просто чтобы реализация GLES и видеокодек должны были иметь возможность обмениваться буферами. (Следовательно, 'COLOR_FormatSurface', a/k/a' OMX_COLOR_FormatAndroidOpaque' ... это «непрозрачно» в смысле структуры данных, а не в смысле альфа-прозрачности.) Это не всегда автоматически, например. Для выхода GLES в MediaCodec требуется флаг 'EGL_RECORDABLE_ANDROID'. – fadden
Вы имеете в виду, что системный интегратор должен реализовать внешнее расширение oes opengl? – dragonfly