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
- Наследование
- Атрибуты
Комментарии
Записывает кадры из потока изображений в виде текстуры OpenGL ES.
Поток изображений может поступать из предварительного просмотра камеры или декодировать видео. Созданный android.view.Surface
из SurfaceTexture объект можно использовать в качестве назначения выходных данных для android.media.MediaPlayer
android.hardware.camera2
android.media.MediaCodec
API и 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 |
Возвращает класс среды выполнения этого |
DataSpace |
Получите пространство данных, связанное с изображением текстуры. |
Handle |
Дескриптор базового экземпляра Android. (Унаследовано от Object) |
IsReleased |
Возвращает значение |
JniIdentityHashCode |
Записывает кадры из потока изображений в виде текстуры OpenGL ES. (Унаследовано от Object) |
JniPeerMembers |
Записывает кадры из потока изображений в виде текстуры OpenGL ES. |
PeerReference |
Записывает кадры из потока изображений в виде текстуры OpenGL ES. (Унаследовано от Object) |
ThresholdClass |
Этот API поддерживает инфраструктуру Mono для Android и не предназначен для использования непосредственно из кода. |
ThresholdType |
Этот API поддерживает инфраструктуру Mono для Android и не предназначен для использования непосредственно из кода. |
Timestamp |
Извлеките метку времени, связанную с изображением текстуры, заданным последним вызовом |
Методы
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, связанную с изображением текстуры, заданным последним вызовом |
JavaFinalize() |
Вызывается сборщиком мусора в объекте, когда сборка мусора определяет, что больше ссылок на объект нет. (Унаследовано от Object) |
Notify() |
Пробуждение одного потока, ожидающего монитора этого объекта. (Унаследовано от Object) |
NotifyAll() |
Просыпает все потоки, ожидающие монитора этого объекта. (Унаследовано от Object) |
Release() |
|
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. |