Поделиться через


SurfaceTexture Класс

Определение

Записывает кадры из потока изображений в виде текстуры OpenGL ES.

[Android.Runtime.Register("android/graphics/SurfaceTexture", DoNotGenerateAcw=true)]
public class SurfaceTexture : Java.Lang.Object
[<Android.Runtime.Register("android/graphics/SurfaceTexture", DoNotGenerateAcw=true)>]
type SurfaceTexture = class
    inherit Object
Наследование
SurfaceTexture
Атрибуты

Комментарии

Записывает кадры из потока изображений в виде текстуры OpenGL ES.

Поток изображений может поступать из предварительного просмотра камеры или декодировать видео. Созданный android.view.Surface из SurfaceTexture объект можно использовать в качестве назначения выходных данных для android.media.MediaPlayerandroid.hardware.camera2android.media.MediaCodecAPI и android.renderscript.Allocation API. При #updateTexImage вызове содержимое объекта текстуры, указанного при создании SurfaceTexture, должно содержать последнее изображение из потока изображений. Это может привести к пропуску некоторых кадров потока.

SurfaceTexture также может использоваться вместо SurfaceHolder при указании назначения выходных данных старого android.hardware.Camera API. Это приведет к тому, что все кадры из потока изображений отправляются в объект SurfaceTexture, а не на дисплей устройства.

При выборке из текстуры сначала следует преобразовать координаты текстуры с помощью матрицы, запрашиваемой через #getTransformMatrix(float[]). Матрица преобразования может изменяться каждый раз #updateTexImage при вызове, поэтому при каждом обновлении изображения текстуры его следует повторно запрашивать. Эта матрица преобразует традиционные векторы столбцов координат текстуры 2D OpenGL ES формы (s, t, 0, 1), где s и t находятся в инклюзивном интервале [0, 1] в правильном расположении выборки в потоковой текстуре. Это преобразование компенсирует любые свойства источника потока изображения, что приводит к тому, что он отличается от традиционной текстуры OpenGL ES. Например, выборка из левого нижнего угла изображения может быть выполнена путем преобразования вектора столбца (0, 0, 0, 1) с помощью запрашиваемой матрицы, а выборка из верхнего правого угла изображения может быть выполнена путем преобразования (1, 1, 0, 1).

Объект текстуры использует целевой объект текстуры GL_TEXTURE_EXTERNAL_OES, который определяется расширением OpenGL ES GL_OES_EGL_image_external . Это ограничивает использование текстуры. Каждый раз, когда текстура привязана, она должна быть привязана к целевому объекту GL_TEXTURE_EXTERNAL_OES, а не к целевому объекту GL_TEXTURE_2D. Кроме того, любой шейдер OpenGL ES 2.0, который примеры из текстуры должны объявить об использовании этого расширения, например директивой "#extension GL_OES_EGL_image_external: требовать". Такие шейдеры также должны получить доступ к текстуре с помощью типа samplerExternalOES GLSL sampler.

Объекты SurfaceTexture могут быть созданы в любом потоке. #updateTexImage может вызываться только в потоке с контекстом OpenGL ES, содержащим объект текстуры. Обратный вызов, доступный в кадре, вызывается в произвольном потоке, поэтому, если не требуется специальное внимание #updateTexImage , не следует вызывать непосредственно из обратного вызова.

Документация по Java для android.graphics.SurfaceTexture.

Части этой страницы — это изменения на основе работы, созданной и общей проектом с открытым исходным кодом Android и используемой в соответствии с условиями, описанными в лицензии Creative Commons 2.5 Attribution.

Конструкторы

SurfaceTexture(Boolean)

Создайте новый SurfaceTexture для потоковой передачи изображений в заданную текстуру OpenGL.

SurfaceTexture(Int32, Boolean)

Создайте новый SurfaceTexture для потоковой передачи изображений в заданную текстуру OpenGL.

SurfaceTexture(Int32)

Создайте новый SurfaceTexture для потоковой передачи изображений в заданную текстуру OpenGL.

SurfaceTexture(IntPtr, JniHandleOwnership)

Конструктор, используемый при создании управляемых представлений объектов JNI; вызывается средой выполнения.

Свойства

Class

Возвращает класс среды выполнения этого Objectобъекта.

(Унаследовано от Object)
DataSpace

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

Handle

Дескриптор базового экземпляра Android.

(Унаследовано от Object)
IsReleased

Возвращает значение true , если SurfaceTexture был выпущен.

JniIdentityHashCode

Записывает кадры из потока изображений в виде текстуры OpenGL ES.

(Унаследовано от Object)
JniPeerMembers

Записывает кадры из потока изображений в виде текстуры OpenGL ES.

PeerReference

Записывает кадры из потока изображений в виде текстуры OpenGL ES.

(Унаследовано от Object)
ThresholdClass

Этот API поддерживает инфраструктуру Mono для Android и не предназначен для использования непосредственно из кода.

ThresholdType

Этот API поддерживает инфраструктуру Mono для Android и не предназначен для использования непосредственно из кода.

Timestamp

Извлеките метку времени, связанную с изображением текстуры, заданным последним вызовом #updateTexImage.

Методы

AttachToGLContext(Int32)

Подключите SurfaceTexture к контексту OpenGL ES, текущему в вызывающем потоке.

Clone()

Создает и возвращает копию этого объекта.

(Унаследовано от Object)
DetachFromGLContext()

Отсоедините SurfaceTexture от контекста OpenGL ES, который владеет объектом текстуры OpenGL ES.

Dispose()

Записывает кадры из потока изображений в виде текстуры OpenGL ES.

(Унаследовано от Object)
Dispose(Boolean)

Записывает кадры из потока изображений в виде текстуры OpenGL ES.

(Унаследовано от Object)
Equals(Object)

Указывает, равен ли другой объект этому объекту.

(Унаследовано от Object)
GetHashCode()

Возвращает значение хэш-кода для объекта.

(Унаследовано от Object)
GetTransformMatrix(Single[])

Получите матрицу преобразования координат текстуры 4x4, связанную с изображением текстуры, заданным последним вызовом #updateTexImage.

JavaFinalize()

Вызывается сборщиком мусора в объекте, когда сборка мусора определяет, что больше ссылок на объект нет.

(Унаследовано от Object)
Notify()

Пробуждение одного потока, ожидающего монитора этого объекта.

(Унаследовано от Object)
NotifyAll()

Просыпает все потоки, ожидающие монитора этого объекта.

(Унаследовано от Object)
Release()

release() освобождает все буферы и помещает SurfaceTexture в состояние "заброшенный".

ReleaseTexImage()

Освобождает содержимое текстуры.

SetDefaultBufferSize(Int32, Int32)

Задайте размер буферов изображений по умолчанию.

SetHandle(IntPtr, JniHandleOwnership)

Задает свойство Handle.

(Унаследовано от Object)
SetOnFrameAvailableListener(SurfaceTexture+IOnFrameAvailableListener, Handler)

Зарегистрируйте обратный вызов, который будет вызываться, когда новый кадр изображения становится доступным для SurfaceTexture.

SetOnFrameAvailableListener(SurfaceTexture+IOnFrameAvailableListener)

Зарегистрируйте обратный вызов, который будет вызываться, когда новый кадр изображения становится доступным для SurfaceTexture.

ToArray<T>()

Записывает кадры из потока изображений в виде текстуры OpenGL ES.

(Унаследовано от Object)
ToString()

Возвращает строковое представление объекта.

(Унаследовано от Object)
UnregisterFromRuntime()

Записывает кадры из потока изображений в виде текстуры OpenGL ES.

(Унаследовано от Object)
UpdateTexImage()

Обновите изображение текстуры до последнего кадра из потока изображений.

Wait()

Приводит к тому, что текущий поток будет ждать, пока он не проснется, как правило, при <>помощи уведомления</em> или <эм>прерванного</em>.

(Унаследовано от Object)
Wait(Int64, Int32)

Приводит к тому, что текущий поток будет ждать, пока он не проснется, как правило, при <>получении уведомления</>em или <>эм прервано< или> до тех пор, пока не истекло определенное количество реального времени.

(Унаследовано от Object)
Wait(Int64)

Приводит к тому, что текущий поток будет ждать, пока он не проснется, как правило, при <>получении уведомления</>em или <>эм прервано< или> до тех пор, пока не истекло определенное количество реального времени.

(Унаследовано от Object)

События

FrameAvailable

Записывает кадры из потока изображений в виде текстуры OpenGL ES.

Явные реализации интерфейса

IJavaPeerable.Disposed()

Записывает кадры из потока изображений в виде текстуры OpenGL ES.

(Унаследовано от Object)
IJavaPeerable.DisposeUnlessReferenced()

Записывает кадры из потока изображений в виде текстуры OpenGL ES.

(Унаследовано от Object)
IJavaPeerable.Finalized()

Записывает кадры из потока изображений в виде текстуры OpenGL ES.

(Унаследовано от Object)
IJavaPeerable.JniManagedPeerState

Записывает кадры из потока изображений в виде текстуры OpenGL ES.

(Унаследовано от Object)
IJavaPeerable.SetJniIdentityHashCode(Int32)

Записывает кадры из потока изображений в виде текстуры OpenGL ES.

(Унаследовано от Object)
IJavaPeerable.SetJniManagedPeerState(JniManagedPeerStates)

Записывает кадры из потока изображений в виде текстуры OpenGL ES.

(Унаследовано от Object)
IJavaPeerable.SetPeerReference(JniObjectReference)

Записывает кадры из потока изображений в виде текстуры OpenGL ES.

(Унаследовано от Object)

Методы расширения

JavaCast<TResult>(IJavaObject)

Выполняет преобразование типа, проверяемого средой выполнения Android.

JavaCast<TResult>(IJavaObject)

Записывает кадры из потока изображений в виде текстуры OpenGL ES.

GetJniTypeName(IJavaPeerable)

Записывает кадры из потока изображений в виде текстуры OpenGL ES.

Применяется к