共用方式為


SurfaceTexture 類別

定義

從影像數據流擷取畫面格做為OpenGLES紋理。

[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
屬性

備註

從影像數據流擷取畫面格做為OpenGLES紋理。

影像串流可能來自相機預覽或視訊譯碼。 android.view.Surface從 SurfaceTexture 建立的 ,可用來做為 、android.media.MediaCodecandroid.media.MediaPlayerandroid.renderscript.Allocation API 的android.hardware.camera2輸出目的地。 呼叫 時 #updateTexImage ,會更新建立 SurfaceTexture 時所指定的紋理對象內容,以包含來自影像數據流的最新影像。 這可能會導致略過數據流的某些畫面格。

指定舊 android.hardware.Camera 版 API 的輸出目的地時,也可以使用 SurfaceTexture 取代 SurfaceHolder。 這樣做會導致影像數據流中的所有畫面傳送到 SurfaceTexture 物件,而不是傳送到裝置的顯示器。

從紋理取樣時,應該先使用透過 #getTransformMatrix(float[])查詢的矩陣來轉換紋理座標。 每次呼叫轉換矩陣可能會變更 #updateTexImage ,因此每次更新紋理影像時,都應該重新查詢。 此矩陣會將格式 (s, t, 0, 1) 的傳統 2D OpenGL ES 紋理座標數據行向量,其中 s 和 t 位於內含間隔 [0, 1] 到串流紋理中的適當取樣位置。 此轉換會補償影像數據流來源的任何屬性,導致它與傳統的OpenGLES紋理不同。 例如,使用查詢矩陣轉換數據行向量 (0, 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 : require” 指示詞。 這類著色器也必須使用samplerExternalOES GLSL取樣器類型來存取紋理。

SurfaceTexture 物件可以在任何線程上建立。 #updateTexImage 只能在包含紋理物件的 OpenGL ES 內容線程上呼叫。 框架可用的回呼是在任意線程上呼叫,因此除非不應該直接從回呼呼叫特別小心 #updateTexImage

android.graphics.SurfaceTextureJava 檔。

此頁面的部分是根據 Android 開放原始碼專案所建立和共用的工作進行修改,並根據 Creative Commons 2.5 屬性授權中所述的詞彙使用。

建構函式

SurfaceTexture(Boolean)

建構新的 SurfaceTexture,將影像串流至指定的 OpenGL 紋理。

SurfaceTexture(Int32)

建構新的 SurfaceTexture,將影像串流至指定的 OpenGL 紋理。

SurfaceTexture(Int32, Boolean)

建構新的 SurfaceTexture,將影像串流至指定的 OpenGL 紋理。

SurfaceTexture(IntPtr, JniHandleOwnership)

建立 JNI 物件的 Managed 表示法時使用的建構函式;由運行時間呼叫。

屬性

Class

傳回這個 Object的運行時間類別。

(繼承來源 Object)
DataSpace

擷取與紋理影像相關聯的數據空間。

Handle

基礎Android實例的句柄。

(繼承來源 Object)
IsReleased

如果已發行 SurfaceTexture,則傳 true 回 。

JniIdentityHashCode

從影像數據流擷取畫面格做為OpenGLES紋理。

(繼承來源 Object)
JniPeerMembers

從影像數據流擷取畫面格做為OpenGLES紋理。

PeerReference

從影像數據流擷取畫面格做為OpenGLES紋理。

(繼承來源 Object)
ThresholdClass

此 API 支援適用於 Android 的 Mono 基礎結構,並不適合直接從您的程式代碼使用。

ThresholdType

此 API 支援適用於 Android 的 Mono 基礎結構,並不適合直接從您的程式代碼使用。

Timestamp

擷取與最近呼叫 #updateTexImage所設定之紋理影像相關聯的時間戳。

方法

AttachToGLContext(Int32)

將 SurfaceTexture 附加至呼叫線程上目前使用的 OpenGL ES 內容。

Clone()

建立並傳回這個 對象的複本。

(繼承來源 Object)
DetachFromGLContext()

將 SurfaceTexture 與擁有 OpenGL ES 紋理物件的 OpenGL ES 內容中斷連結。

Dispose()

從影像數據流擷取畫面格做為OpenGLES紋理。

(繼承來源 Object)
Dispose(Boolean)

從影像數據流擷取畫面格做為OpenGLES紋理。

(繼承來源 Object)
Equals(Object)

指出其他物件是否「等於」這個物件。

(繼承來源 Object)
GetHashCode()

傳回此物件的雜湊碼值。

(繼承來源 Object)
GetTransformMatrix(Single[])

擷取與最近呼叫 #updateTexImage所設定之紋理影像相關聯的 4x4 紋理座標轉換矩陣。

JavaFinalize()

當垃圾收集決定不再參考物件時,垃圾收集行程在 物件上呼叫。

(繼承來源 Object)
Notify()

喚醒正在等候此物件監視器的單一線程。

(繼承來源 Object)
NotifyAll()

喚醒正在等候此物件監視器的所有線程。

(繼承來源 Object)
Release()

release() 釋放所有緩衝區,並將 SurfaceTexture 置於「已放棄」狀態。

ReleaseTexImage()

釋放紋理內容。

SetDefaultBufferSize(Int32, Int32)

設定影像緩衝區的預設大小。

SetHandle(IntPtr, JniHandleOwnership)

設定 Handle 屬性。

(繼承來源 Object)
SetOnFrameAvailableListener(SurfaceTexture+IOnFrameAvailableListener)

註冊當 SurfaceTexture 有新的影像框架可供使用時叫用的回呼。

SetOnFrameAvailableListener(SurfaceTexture+IOnFrameAvailableListener, Handler)

註冊當 SurfaceTexture 有新的影像框架可供使用時叫用的回呼。

ToArray<T>()

從影像數據流擷取畫面格做為OpenGLES紋理。

(繼承來源 Object)
ToString()

傳回物件的字串表示。

(繼承來源 Object)
UnregisterFromRuntime()

從影像數據流擷取畫面格做為OpenGLES紋理。

(繼承來源 Object)
UpdateTexImage()

將紋理影像更新為影像數據流中最新的畫面。

Wait()

讓目前線程等候直到喚醒為止,通常是藉由em <notified/em>或<em>interrupted</em> 來喚醒它。<>

(繼承來源 Object)
Wait(Int64)

讓目前的線程等到喚醒為止,通常是因為 <em>notified</em> 或 <em>interrupted</em>,或直到經過一定數量的實時為止。

(繼承來源 Object)
Wait(Int64, Int32)

讓目前的線程等到喚醒為止,通常是因為 <em>notified</em> 或 <em>interrupted</em>,或直到經過一定數量的實時為止。

(繼承來源 Object)

事件

FrameAvailable

從影像數據流擷取畫面格做為OpenGLES紋理。

明確介面實作

IJavaPeerable.Disposed()

從影像數據流擷取畫面格做為OpenGLES紋理。

(繼承來源 Object)
IJavaPeerable.DisposeUnlessReferenced()

從影像數據流擷取畫面格做為OpenGLES紋理。

(繼承來源 Object)
IJavaPeerable.Finalized()

從影像數據流擷取畫面格做為OpenGLES紋理。

(繼承來源 Object)
IJavaPeerable.JniManagedPeerState

從影像數據流擷取畫面格做為OpenGLES紋理。

(繼承來源 Object)
IJavaPeerable.SetJniIdentityHashCode(Int32)

從影像數據流擷取畫面格做為OpenGLES紋理。

(繼承來源 Object)
IJavaPeerable.SetJniManagedPeerState(JniManagedPeerStates)

從影像數據流擷取畫面格做為OpenGLES紋理。

(繼承來源 Object)
IJavaPeerable.SetPeerReference(JniObjectReference)

從影像數據流擷取畫面格做為OpenGLES紋理。

(繼承來源 Object)

擴充方法

JavaCast<TResult>(IJavaObject)

執行 Android 執行時間檢查的類型轉換。

JavaCast<TResult>(IJavaObject)

從影像數據流擷取畫面格做為OpenGLES紋理。

GetJniTypeName(IJavaPeerable)

從影像數據流擷取畫面格做為OpenGLES紋理。

適用於