Freigeben über


SurfaceTexture Klasse

Definition

Erfasst Frames aus einem Bildstream als OpenGL ES-Textur.

[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
Vererbung
SurfaceTexture
Attribute

Hinweise

Erfasst Frames aus einem Bildstream als OpenGL ES-Textur.

Der Bilddatenstrom kann entweder aus der Kameravorschau oder der Videodecodierung stammen. Ein android.view.Surface aus einem SurfaceTexture erstelltes SurfaceTexture-Steuerelement kann als Ausgabeziel für die android.hardware.camera2APIs android.media.MediaCodecandroid.media.MediaPlayerandroid.renderscript.Allocation verwendet werden. Wenn #updateTexImage der Aufruf erfolgt, werden die Inhalte des Texturobjekts, das beim Erstellen des SurfaceTexture-Objekts angegeben wurde, aktualisiert, um das neueste Bild aus dem Bilddatenstrom zu enthalten. Dies kann dazu führen, dass einige Frames des Datenstroms übersprungen werden.

Ein SurfaceTexture kann auch anstelle eines SurfaceHolder verwendet werden, wenn das Ausgabeziel der älteren android.hardware.Camera API angegeben wird. Dadurch werden alle Frames aus dem Bilddatenstrom an das SurfaceTexture-Objekt und nicht an die Anzeige des Geräts gesendet.

Beim Sampling aus der Textur sollte man zuerst die Texturkoordinaten mithilfe der überfragten Matrix transformieren #getTransformMatrix(float[]). Die Transformationsmatrix kann sich jedes Mal #updateTexImage ändern, wenn sie aufgerufen wird, daher sollte sie jedes Mal erneut abgefragt werden, wenn das Texturbild aktualisiert wird. Diese Matrix transformiert herkömmliche 2D OpenGL ES Texturkoordinatenspaltenvektoren des Formulars (s, t, 0, 1), wobei s und t sich im inklusiven Intervall [0, 1] auf die richtige Samplingposition in der gestreamten Textur befinden. Diese Transformation entschädigt alle Eigenschaften der Bildstreamquelle, die dazu führen, dass sie sich von einer herkömmlichen OpenGL ES-Textur unterscheidet. Beispielsweise kann das Sampling aus der unteren linken Ecke des Bilds durch Transformieren des Spaltenvektors (0, 0, 0, 1) mithilfe der abgefragten Matrix erreicht werden, während das Sampling aus der oberen rechten Ecke des Bilds durch Transformieren (1, 1, 0, 1, 1) erfolgen kann.

Das Texturobjekt verwendet das GL_TEXTURE_EXTERNAL_OES Texturziel, das durch die GL_OES_EGL_image_external OpenGL ES-Erweiterung definiert wird. Dadurch wird begrenzt, wie die Textur verwendet werden kann. Jedes Mal, wenn die Textur gebunden ist, muss sie an das GL_TEXTURE_EXTERNAL_OES Ziel und nicht an das GL_TEXTURE_2D Ziel gebunden werden. Darüber hinaus muss jeder OpenGL ES 2.0-Shader, der Beispiele aus der Textur enthält, die Verwendung dieser Erweiterung mithilfe einer "#extension GL_OES_EGL_image_external : require"-Direktive deklarieren. Solche Shader müssen auch mithilfe des SamplerExternalOES GLSL-Samplertyps auf die Textur zugreifen.

SurfaceTexture-Objekte können in einem beliebigen Thread erstellt werden. #updateTexImage kann nur für den Thread mit dem OpenGL ES-Kontext aufgerufen werden, der das Texturobjekt enthält. Der frameverwendige Rückruf wird für einen beliebigen Thread aufgerufen. Es sei denn, besondere Sorgfalt sollte #updateTexImage nicht direkt vom Rückruf aufgerufen werden.

Java-Dokumentation für android.graphics.SurfaceTexture.

Teile dieser Seite sind Änderungen auf der Grundlage von Arbeiten, die vom Android Open Source-Projekt erstellt und freigegeben werden und gemäß den in der Creative Commons 2.5 Attribution License beschriebenen Begriffen verwendet werden.

Konstruktoren

SurfaceTexture(Boolean)

Erstellen Sie eine neue SurfaceTexture zum Streamen von Bildern auf eine bestimmte OpenGL-Textur.

SurfaceTexture(Int32, Boolean)

Erstellen Sie eine neue SurfaceTexture zum Streamen von Bildern auf eine bestimmte OpenGL-Textur.

SurfaceTexture(Int32)

Erstellen Sie eine neue SurfaceTexture zum Streamen von Bildern auf eine bestimmte OpenGL-Textur.

SurfaceTexture(IntPtr, JniHandleOwnership)

Ein Konstruktor, der beim Erstellen verwalteter Darstellungen von JNI-Objekten verwendet wird; wird von der Laufzeit aufgerufen.

Eigenschaften

Class

Gibt die Laufzeitklasse dieses Werts Objectzurück.

(Geerbt von Object)
DataSpace

Rufen Sie den mit dem Texturbild verknüpften Datenbereich ab.

Handle

Das Handle für die zugrunde liegende Android-Instanz.

(Geerbt von Object)
IsReleased

Gibt zurück true , wenn surfaceTexture freigegeben wurde.

JniIdentityHashCode

Erfasst Frames aus einem Bildstream als OpenGL ES-Textur.

(Geerbt von Object)
JniPeerMembers

Erfasst Frames aus einem Bildstream als OpenGL ES-Textur.

PeerReference

Erfasst Frames aus einem Bildstream als OpenGL ES-Textur.

(Geerbt von Object)
ThresholdClass

Diese API unterstützt die Mono für Android-Infrastruktur und ist nicht für die direkte Verwendung aus Ihrem Code vorgesehen.

ThresholdType

Diese API unterstützt die Mono für Android-Infrastruktur und ist nicht für die direkte Verwendung aus Ihrem Code vorgesehen.

Timestamp

Rufen Sie den Zeitstempel ab, der dem Texturbild zugeordnet ist, das durch den letzten Aufruf von #updateTexImage.

Methoden

AttachToGLContext(Int32)

Fügen Sie surfaceTexture an den OpenGL ES-Kontext an, der sich auf dem aufrufenden Thread befindet.

Clone()

Erstellt und gibt eine Kopie dieses Objekts zurück.

(Geerbt von Object)
DetachFromGLContext()

Trennen Sie surfaceTexture aus dem OpenGL ES-Kontext, der das OpenGL ES-Texturobjekt besitzt.

Dispose()

Erfasst Frames aus einem Bildstream als OpenGL ES-Textur.

(Geerbt von Object)
Dispose(Boolean)

Erfasst Frames aus einem Bildstream als OpenGL ES-Textur.

(Geerbt von Object)
Equals(Object)

Gibt an, ob ein anderes Objekt "gleich" diesem Objekt ist.

(Geerbt von Object)
GetHashCode()

Gibt einen Hashcodewert für das Objekt zurück.

(Geerbt von Object)
GetTransformMatrix(Single[])

Rufen Sie die 4x4 Texturkoordinatentransformationsmatrix ab, die dem Texturbild zugeordnet ist, das durch den letzten Aufruf von #updateTexImage.

JavaFinalize()

Wird vom Garbage Collector für ein Objekt aufgerufen, wenn die Garbage Collection bestimmt, dass keine weiteren Verweise auf das Objekt vorhanden sind.

(Geerbt von Object)
Notify()

Aktiviert einen einzelnen Thread, der auf dem Monitor dieses Objekts wartet.

(Geerbt von Object)
NotifyAll()

Aktiviert alle Threads, die auf dem Monitor dieses Objekts warten.

(Geerbt von Object)
Release()

release() gibt alle Puffer frei und fügt den SurfaceTexture in den Zustand "verlassen" ein.

ReleaseTexImage()

Gibt den Texturinhalt frei.

SetDefaultBufferSize(Int32, Int32)

Legen Sie die Standardgröße der Bildpuffer fest.

SetHandle(IntPtr, JniHandleOwnership)

Legt die Handle-Eigenschaft fest.

(Geerbt von Object)
SetOnFrameAvailableListener(SurfaceTexture+IOnFrameAvailableListener, Handler)

Registrieren Sie einen Rückruf, der aufgerufen werden soll, wenn ein neuer Bildframe für SurfaceTexture verfügbar wird.

SetOnFrameAvailableListener(SurfaceTexture+IOnFrameAvailableListener)

Registrieren Sie einen Rückruf, der aufgerufen werden soll, wenn ein neuer Bildframe für SurfaceTexture verfügbar wird.

ToArray<T>()

Erfasst Frames aus einem Bildstream als OpenGL ES-Textur.

(Geerbt von Object)
ToString()

Gibt eine Zeichenfolgendarstellung des Objekts zurück.

(Geerbt von Object)
UnregisterFromRuntime()

Erfasst Frames aus einem Bildstream als OpenGL ES-Textur.

(Geerbt von Object)
UpdateTexImage()

Aktualisieren Sie das Texturbild auf den neuesten Frame aus dem Bilddatenstrom.

Wait()

Bewirkt, dass der aktuelle Thread wartet, bis er wach ist, in der Regel durch em benachrichtigt/em> oder <em>unterbrochen</em>.<><

(Geerbt von Object)
Wait(Int64, Int32)

Bewirkt, dass der aktuelle Thread wartet, bis er wach ist, in der Regel durch <em>benachrichtigt</em> oder <em>unterbrochen</em> oder bis eine bestimmte Menge an Echtzeit verstrichen ist.

(Geerbt von Object)
Wait(Int64)

Bewirkt, dass der aktuelle Thread wartet, bis er wach ist, in der Regel durch <em>benachrichtigt</em> oder <em>unterbrochen</em> oder bis eine bestimmte Menge an Echtzeit verstrichen ist.

(Geerbt von Object)

Ereignisse

FrameAvailable

Erfasst Frames aus einem Bildstream als OpenGL ES-Textur.

Explizite Schnittstellenimplementierungen

IJavaPeerable.Disposed()

Erfasst Frames aus einem Bildstream als OpenGL ES-Textur.

(Geerbt von Object)
IJavaPeerable.DisposeUnlessReferenced()

Erfasst Frames aus einem Bildstream als OpenGL ES-Textur.

(Geerbt von Object)
IJavaPeerable.Finalized()

Erfasst Frames aus einem Bildstream als OpenGL ES-Textur.

(Geerbt von Object)
IJavaPeerable.JniManagedPeerState

Erfasst Frames aus einem Bildstream als OpenGL ES-Textur.

(Geerbt von Object)
IJavaPeerable.SetJniIdentityHashCode(Int32)

Erfasst Frames aus einem Bildstream als OpenGL ES-Textur.

(Geerbt von Object)
IJavaPeerable.SetJniManagedPeerState(JniManagedPeerStates)

Erfasst Frames aus einem Bildstream als OpenGL ES-Textur.

(Geerbt von Object)
IJavaPeerable.SetPeerReference(JniObjectReference)

Erfasst Frames aus einem Bildstream als OpenGL ES-Textur.

(Geerbt von Object)

Erweiterungsmethoden

JavaCast<TResult>(IJavaObject)

Führt eine android-laufzeitgecheckte Typkonvertierung aus.

JavaCast<TResult>(IJavaObject)

Erfasst Frames aus einem Bildstream als OpenGL ES-Textur.

GetJniTypeName(IJavaPeerable)

Erfasst Frames aus einem Bildstream als OpenGL ES-Textur.

Gilt für: