1# OH_NativeImage 2 3 4## 概述 5 6提供NativeImage功能,作为数据消费者,主要用来将数据和OpenGL纹理对接,需在OpenGL环境下使用 7 8\@syscap SystemCapability.Graphic.Graphic2D.OH_NativeImage 9 10**起始版本:** 11 129 13 14 15## 汇总 16 17 18### 文件 19 20| 名称 | 描述 | 21| -------- | -------- | 22| [native_image.h](native__image_8h.md) | 定义获取和使用NativeImage的相关函数<br/>引用文件:<native_image/native_image.h> | 23 24 25### 类型定义 26 27| 名称 | 描述 | 28| -------- | -------- | 29| [OH_NativeImage](#oh_nativeimage) | 提供OH_NativeImage结构体声明 | 30| [OHNativeWindow](#ohnativewindow) | 提供对NativeWindow的访问功能 | 31 32 33### 函数 34 35| 名称 | 描述 | 36| -------- | -------- | 37| [OH_NativeImage_Create](#oh_nativeimage_create) (uint32_t textureId, uint32_t textureTarget) | 创建一个**OH_NativeImage**实例,该实例与OpenGL ES的纹理ID和纹理目标相关联 | 38| [OH_NativeImage_AcquireNativeWindow](#oh_nativeimage_acquirenativewindow) (OH_NativeImage \*image) | 获取与OH_NativeImage相关联的OHNativeWindow指针. 该OHNativeWindow后续不再需要时需要调用<br/>OH_NativeWindow_DestroyNativeWindow释放 | 39| [OH_NativeImage_AttachContext](#oh_nativeimage_attachcontext) (OH_NativeImage \*image, uint32_t textureId) | 将OH_NativeImage实例附加到当前OpenGL ES上下文, 且该OpenGL ES纹理会绑定到<br/>GL_TEXTURE_EXTERNAL_OES, 并通过OH_NativeImage进行更新 | 40| [OH_NativeImage_DetachContext](#oh_nativeimage_detachcontext) (OH_NativeImage \*image) | 将OH_NativeImage实例从当前OpenGL ES上下文分离 | 41| [OH_NativeImage_UpdateSurfaceImage](#oh_nativeimage_updatesurfaceimage) (OH_NativeImage \*image) | 通过OH_NativeImage获取最新帧更新相关联的OpenGL ES纹理 | 42| [OH_NativeImage_GetTimestamp](#oh_nativeimage_gettimestamp) (OH_NativeImage*image) | 获取最近调用OH_NativeImage_UpdateSurfaceImage的纹理图像的相关时间戳 | 43| [OH_NativeImage_GetTransformMatrix](#oh_nativeimage_gettransformmatrix) (OH_NativeImage \*image, float matrix[16]) | 获取最近调用OH_NativeImage_UpdateSurfaceImage的纹理图像的变化矩阵 | 44| [OH_NativeImage_Destroy](#oh_nativeimage_destroy) (OH_NativeImage \*\*image) | 销毁通过OH_NativeImage_Create创建的**OH_NativeImage**实例, 销毁后该<br/>**OH_NativeImage**指针会被赋值为空 | 45 46 47## 类型定义说明 48 49 50### OH_NativeImage 51 52 53``` 54typedef struct OH_NativeImage OH_NativeImage 55``` 56 57**描述:** 58 59提供OH_NativeImage结构体声明 60 61 62### OHNativeWindow 63 64 65``` 66typedef struct NativeWindow OHNativeWindow 67``` 68 69**描述:** 70 71提供对NativeWindow的访问功能 72 73 74## 函数说明 75 76 77### OH_NativeImage_AcquireNativeWindow() 78 79 80``` 81OHNativeWindow* OH_NativeImage_AcquireNativeWindow (OH_NativeImage * image) 82``` 83 84**描述:** 85 86获取与OH_NativeImage相关联的OHNativeWindow指针. 该OHNativeWindow后续不再需要时需要调用 87 88OH_NativeWindow_DestroyNativeWindow释放 89 90\@syscap SystemCapability.Graphic.Graphic2D.OH_NativeImage 91 92**参数:** 93 94| 名称 | 描述 | 95| -------- | -------- | 96| image | 指向OH_NativeImage实例的指针。 | 97 98**返回:** 99 100成功则返回一个指向OHNativeWindow实例的指针,否则返回**NULL** 101 102 103### OH_NativeImage_AttachContext() 104 105 106``` 107int32_t OH_NativeImage_AttachContext (OH_NativeImage * image, uint32_t textureId ) 108``` 109 110**描述:** 111 112将OH_NativeImage实例附加到当前OpenGL ES上下文, 且该OpenGL ES纹理会绑定到 113 114GL_TEXTURE_EXTERNAL_OES, 并通过OH_NativeImage进行更新 115 116\@syscap SystemCapability.Graphic.Graphic2D.OH_NativeImage 117 118**参数:** 119 120| 名称 | 描述 | 121| -------- | -------- | 122| image | 指向OH_NativeImage实例的指针。 | 123| textureId | OH_NativeImage要附加到的OpenGL ES纹理的id。 | 124 125**返回:** 126 127返回值为0表示执行成功 128 129 130### OH_NativeImage_Create() 131 132 133``` 134OH_NativeImage* OH_NativeImage_Create (uint32_t textureId, uint32_t textureTarget ) 135``` 136 137**描述:** 138 139创建一个**OH_NativeImage**实例,该实例与OpenGL ES的纹理ID和纹理目标相关联 140 141\@syscap SystemCapability.Graphic.Graphic2D.OH_NativeImage 142 143**参数:** 144 145| 名称 | 描述 | 146| -------- | -------- | 147| textureId | OpenGL ES的纹理ID,OH_NativeImage实例会与之相关联 | 148| textureTarget | OpenGL ES的纹理目标 | 149 150**返回:** 151 152返回一个指向**OH_NativeImage**实例的指针 returns **NULL** otherwise 153 154 155### OH_NativeImage_Destroy() 156 157 158``` 159void OH_NativeImage_Destroy (OH_NativeImage ** image) 160``` 161 162**描述:** 163 164销毁通过OH_NativeImage_Create创建的**OH_NativeImage**实例, 销毁后该 165 166**OH_NativeImage**指针会被赋值为空 167 168\@syscap SystemCapability.Graphic.Graphic2D.OH_NativeImage 169 170**参数:** 171 172| 名称 | 描述 | 173| -------- | -------- | 174| image | 指向OH_NativeImage实例的指针。 | 175 176 177### OH_NativeImage_DetachContext() 178 179 180``` 181int32_t OH_NativeImage_DetachContext (OH_NativeImage * image) 182``` 183 184**描述:** 185 186将OH_NativeImage实例从当前OpenGL ES上下文分离 187 188\@syscap SystemCapability.Graphic.Graphic2D.OH_NativeImage 189 190**参数:** 191 192| 名称 | 描述 | 193| -------- | -------- | 194| image | 指向OH_NativeImage实例的指针。 | 195 196**返回:** 197 198返回值为0表示执行成功 199 200 201### OH_NativeImage_GetTimestamp() 202 203 204``` 205int64_t OH_NativeImage_GetTimestamp (OH_NativeImage * image) 206``` 207 208**描述:** 209 210获取最近调用OH_NativeImage_UpdateSurfaceImage的纹理图像的相关时间戳 211 212\@syscap SystemCapability.Graphic.Graphic2D.OH_NativeImage 213 214**参数:** 215 216| 名称 | 描述 | 217| -------- | -------- | 218| image | 指向OH_NativeImage实例的指针。 | 219 220**返回:** 221 222返回纹理图像的相关时间戳 223 224 225### OH_NativeImage_GetTransformMatrix() 226 227 228``` 229int32_t OH_NativeImage_GetTransformMatrix (OH_NativeImage * image, float matrix[16] ) 230``` 231 232**描述:** 233 234获取最近调用OH_NativeImage_UpdateSurfaceImage的纹理图像的变化矩阵 235 236\@syscap SystemCapability.Graphic.Graphic2D.OH_NativeImage 237 238**参数:** 239 240| 名称 | 描述 | 241| -------- | -------- | 242| image | 指向OH_NativeImage实例的指针。 | 243| matrix | 用来存储要获取的4\*4的变化矩阵。 | 244 245**返回:** 246 247返回值为0表示执行成功 248 249 250### OH_NativeImage_UpdateSurfaceImage() 251 252 253``` 254int32_t OH_NativeImage_UpdateSurfaceImage (OH_NativeImage * image) 255``` 256 257**描述:** 258 259通过OH_NativeImage获取最新帧更新相关联的OpenGL ES纹理 260 261\@syscap SystemCapability.Graphic.Graphic2D.OH_NativeImage 262 263**参数:** 264 265| 名称 | 描述 | 266| -------- | -------- | 267| image | 指向OH_NativeImage实例的指针。 | 268 269**返回:** 270 271返回值为0表示执行成功 272