SurfaceTexture 类
定义
重要
一些信息与预发行产品相关,相应产品在发行之前可能会进行重大修改。 对于此处提供的信息,Microsoft 不作任何明示或暗示的担保。
将图像流中的帧捕获为 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 创建的,可用作 API 和 android.renderscript.Allocation
API 的android.hardware.camera2
android.media.MediaCodec
android.media.MediaPlayer
输出目标。 调用时 #updateTexImage
,将更新在创建 SurfaceTexture 时指定的纹理对象的内容,以包含图像流中的最新图像。 这可能会导致跳过流的某些帧。
指定较旧 android.hardware.Camera
API 的输出目标时,还可以使用 SurfaceTexture 代替 SurfaceHolder。 这样做将导致图像流中的所有帧都发送到 SurfaceTexture 对象,而不是发送到设备的显示器。
从纹理采样时,应首先使用通过查询 #getTransformMatrix(float[])
的矩阵来转换纹理坐标。 每次调用转换矩阵时都可能会更改 #updateTexImage
,因此每次更新纹理图像时都应重新查询该矩阵。 此矩阵将传统的 2D OpenGL ES 纹理坐标列向量(s、t、0、1)转换为流式处理纹理中的适当采样位置(其中 s、t、0、1) 和 t 处于非独占间隔 [0, 1]。 此转换可补偿图像流源的任何属性,这些属性会导致它与传统的 OpenGL ES 纹理不同。 例如,可以通过使用查询矩阵转换列向量(0、0、0、1)来实现图像左下角的采样,而图像右上角的采样可以通过转换(1、1、0、1)来完成。
纹理对象使用由 GL_OES_EGL_image_external OpenGL ES 扩展定义的 GL_TEXTURE_EXTERNAL_OES 纹理目标。 这会限制如何使用纹理。 每次绑定纹理时,它都必须绑定到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.SurfaceTexture
Java 文档
本页的某些部分是根据 Android 开放源代码项目创建和共享的工作进行的修改,并根据 Creative Commons 2.5 属性许可证中所述的术语使用。
构造函数
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 for Android 基础结构,不打算直接从代码使用。 |
ThresholdType |
此 API 支持 Mono for Android 基础结构,不打算直接从代码使用。 |
Timestamp |
检索与最近调用 |
方法
AttachToGLContext(Int32) |
将 SurfaceTexture 附加到调用线程上的当前 OpenGL ES 上下文。 |
Clone() |
创建并返回此对象的副本。 (继承自 Object) |
DetachFromGLContext() |
从拥有 OpenGL ES 纹理对象的 OpenGL ES 上下文中分离 SurfaceTexture。 |
Dispose() |
将图像流中的帧捕获为 OpenGL ES 纹理。 (继承自 Object) |
Dispose(Boolean) |
将图像流中的帧捕获为 OpenGL ES 纹理。 (继承自 Object) |
Equals(Object) |
指示其他对象是否“等于”此对象。 (继承自 Object) |
GetHashCode() |
返回对象的哈希代码值。 (继承自 Object) |
GetTransformMatrix(Single[]) |
检索与最近调用 |
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> 或 <em>interrupted</em>。<>< (继承自 Object) |
Wait(Int64, Int32) |
使当前线程等待直到唤醒,通常是通过 <em>通知</em> 或 <em interrupted</em>>,或直到经过一定数量的实时。 (继承自 Object) |
Wait(Int64) |
使当前线程等待直到唤醒,通常是通过 <em>通知</em> 或 <em interrupted</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 纹理。 |