未验证 提交 92a54291 编写于 作者: O openharmony_ci 提交者: Gitee

!22509 翻译完成:21842 开发指导中指明代码示例需要依赖的动态链接库

Merge pull request !22509 from wusongqing/TR21842
...@@ -26,6 +26,13 @@ For details about the APIs, see [native_buffer](../reference/native-apis/_o_h___ ...@@ -26,6 +26,13 @@ For details about the APIs, see [native_buffer](../reference/native-apis/_o_h___
The following describes how to use the native APIs provided by **NativeBuffer** to create an **OH_NativeBuffer** instance, obtain memory properties, and map the corresponding ION memory to the process address space. The following describes how to use the native APIs provided by **NativeBuffer** to create an **OH_NativeBuffer** instance, obtain memory properties, and map the corresponding ION memory to the process address space.
**Adding Dynamic Link Libraries**
Add the following library to **CMakeLists.txt**:
```txt
libnative_buffer.so
```
**Header File** **Header File**
```c++ ```c++
#include <native_buffer/native_buffer.h> #include <native_buffer/native_buffer.h>
...@@ -51,14 +58,14 @@ The following describes how to use the native APIs provided by **NativeBuffer** ...@@ -51,14 +58,14 @@ The following describes how to use the native APIs provided by **NativeBuffer**
if (ret != 0) { if (ret != 0) {
std::cout << "OH_NativeBuffer_Map Failed" << std::endl; std::cout << "OH_NativeBuffer_Map Failed" << std::endl;
} }
// Unmap the ION memory from the process address space when it is no longer needed. // Unmap the ION memory from the process address space when it is no longer needed.
ret = OH_NativeBuffer_Unmap(buffer); ret = OH_NativeBuffer_Unmap(buffer);
if (ret != 0) { if (ret != 0) {
std::cout << "OH_NativeBuffer_Unmap Failed" << std::endl; std::cout << "OH_NativeBuffer_Unmap Failed" << std::endl;
} }
``` ```
3. Obtain the memory properties. 3. Obtain the memory properties.
```c++ ```c++
// Obtain the properties of the OH_NativeBuffer instance. // Obtain the properties of the OH_NativeBuffer instance.
......
...@@ -27,6 +27,17 @@ For details about the APIs, see [native_image](../reference/native-apis/_o_h___n ...@@ -27,6 +27,17 @@ For details about the APIs, see [native_image](../reference/native-apis/_o_h___n
The following steps describe how to use the native APIs provided by **NativeImage** to create an **OH_NativeImage** instance as the consumer and update the data to a OpenGL external texture. The following steps describe how to use the native APIs provided by **NativeImage** to create an **OH_NativeImage** instance as the consumer and update the data to a OpenGL external texture.
**Adding Dynamic Link Libraries**
Add the following libraries to **CMakeLists.txt**:
```txt
libEGL.so
libGLESv3.so
libnative_image.so
libnative_window.so
libnative_buffer.so
```
**Header File** **Header File**
```c++ ```c++
#include <EGL/egl.h> #include <EGL/egl.h>
...@@ -159,41 +170,48 @@ The following steps describe how to use the native APIs provided by **NativeImag ...@@ -159,41 +170,48 @@ The following steps describe how to use the native APIs provided by **NativeImag
4. Write the produced content to a **NativeWindowBuffer** instance. 4. Write the produced content to a **NativeWindowBuffer** instance.
1. Obtain a NativeWindowBuffer instance from the NativeWindow instance. 1. Obtain a NativeWindowBuffer instance from the NativeWindow instance.
```c++
OHNativeWindowBuffer* buffer = nullptr;
int fenceFd;
// Obtain a NativeWindowBuffer instance by calling OH_NativeWindow_NativeWindowRequestBuffer.
OH_NativeWindow_NativeWindowRequestBuffer(nativeWindow, &buffer, &fenceFd);
BufferHandle *handle = OH_NativeWindow_GetBufferHandleFromNative(buffer); ```c++
int code = SET_BUFFER_GEOMETRY; OHNativeWindowBuffer* buffer = nullptr;
int32_t width = 0x100; int fenceFd;
int32_t height = 0x100; // Obtain a NativeWindowBuffer instance by calling OH_NativeWindow_NativeWindowRequestBuffer.
ret = OH_NativeWindow_NativeWindowHandleOpt(nativeWindow, code, width, height); OH_NativeWindow_NativeWindowRequestBuffer(nativeWindow, &buffer, &fenceFd);
```
3. Write the produced content to the **NativeWindowBuffer** instance. BufferHandle *handle = OH_NativeWindow_GetBufferHandleFromNative(buffer);
```c++ int code = SET_BUFFER_GEOMETRY;
static uint32_t value = 0x00; int32_t width = 0x100;
value++; int32_t height = 0x100;
uint32_t *pixel = static_cast<uint32_t *>(handle->virAddr); ret = OH_NativeWindow_NativeWindowHandleOpt(nativeWindow, code, width, height);
for (uint32_t x = 0; x < width; x++) { ```
for (uint32_t y = 0; y < height; y++) {
*pixel++ = value; 2. Write the produced content to the **NativeWindowBuffer** instance.
}
} ```c++
``` static uint32_t value = 0x00;
4. Flush the **NativeWindowBuffer** to the **NativeWindow**. value++;
```c++ uint32_t *pixel = static_cast<uint32_t *>(handle->virAddr);
// Set the refresh region. If Rect in Region is a null pointer or rectNumber is 0, all contents in the NativeWindowBuffer are changed. for (uint32_t x = 0; x < width; x++) {
Region region{nullptr, 0}; for (uint32_t y = 0; y < height; y++) {
// Flush the buffer to the consumer through OH_NativeWindow_NativeWindowFlushBuffer, for example, by displaying it on the screen. *pixel++ = value;
OH_NativeWindow_NativeWindowFlushBuffer(nativeWindow, buffer, fenceFd, region); }
``` }
5. Destroy the **NativeWindow** instance when it is no longer needed. ```
```c++
OH_NativeWindow_DestroyNativeWindow(nativeWindow); 3. Flush the **NativeWindowBuffer** to the **NativeWindow**.
```
```c++
// Set the refresh region. If Rect in Region is a null pointer or rectNumber is 0, all contents in the NativeWindowBuffer are changed.
Region region{nullptr, 0};
// Flush the buffer to the consumer through OH_NativeWindow_NativeWindowFlushBuffer, for example, by displaying it on the screen.
OH_NativeWindow_NativeWindowFlushBuffer(nativeWindow, buffer, fenceFd, region);
```
4. Destroy the **NativeWindow** instance when it is no longer needed.
```c++
OH_NativeWindow_DestroyNativeWindow(nativeWindow);
```
5. Update the content to the OpenGL texture. 5. Update the content to the OpenGL texture.
```c++ ```c++
// Update the content to the OpenGL texture. // Update the content to the OpenGL texture.
......
...@@ -6,12 +6,12 @@ The **NativeVSync** module is used to obtain virtual synchronization (VSync) sig ...@@ -6,12 +6,12 @@ The **NativeVSync** module is used to obtain virtual synchronization (VSync) sig
## Available APIs ## Available APIs
| API| Description:| | API| Description|
| -------- | -------- | | -------- | -------- |
| OH_NativeVSync_Create (const char \*name, unsigned int length) | Creates an **OH_NativeVSync** instance. A new **OH_NativeVSync** instance is created each time this function is called.| | OH_NativeVSync_Create (const char \*name, unsigned int length) | Creates an **OH_NativeVSync** instance. A new **OH_NativeVSync** instance is created each time this function is called.|
| OH_NativeVSync_Destroy (OH_NativeVSync \*nativeVsync) | Destroys an **OH_NativeVSync** instance.| | OH_NativeVSync_Destroy (OH_NativeVSync \*nativeVsync) | Destroys an **OH_NativeVSync** instance.|
| OH_NativeVSync_FrameCallback (long long timestamp, void \*data) | Sets a callback function. **timestamp** indicates the timestamp, and **data** indicates the input parameter of the callback function. | | OH_NativeVSync_FrameCallback (long long timestamp, void \*data) | Sets a callback function. **timestamp** indicates the timestamp, and **data** indicates the input parameter of the callback function.|
| OH_NativeVSync_RequestFrame (OH_NativeVSync \*nativeVsync, OH_NativeVSync_FrameCallback callback, void \*data) | Requests the next VSync signal. When the signal arrives, a callback function is invoked.| | OH_NativeVSync_RequestFrame (OH_NativeVSync \*nativeVsync, OH_NativeVSync_FrameCallback callback, void \*data) | Requests the next VSync signal. When the signal arrives, a callback function is invoked.|
For details about the APIs, see [native_vsync](../reference/native-apis/_native_vsync.md). For details about the APIs, see [native_vsync](../reference/native-apis/_native_vsync.md).
...@@ -19,6 +19,13 @@ For details about the APIs, see [native_vsync](../reference/native-apis/_native_ ...@@ -19,6 +19,13 @@ For details about the APIs, see [native_vsync](../reference/native-apis/_native_
The following steps describe how to use the native APIs provided by **NativeVSync** to create and destroy an **OH_NativeVSync** instance and set the VSync callback function. The following steps describe how to use the native APIs provided by **NativeVSync** to create and destroy an **OH_NativeVSync** instance and set the VSync callback function.
**Adding Dynamic Link Libraries**
Add the following library to **CMakeLists.txt**:
```txt
libnative_vsync.so
```
**Header File** **Header File**
```c++ ```c++
#include <native_vsync/native_vsync.h> #include <native_vsync/native_vsync.h>
...@@ -33,12 +40,12 @@ The following steps describe how to use the native APIs provided by **NativeVSyn ...@@ -33,12 +40,12 @@ The following steps describe how to use the native APIs provided by **NativeVSyn
std::cout << "OnVSync: " << timestamp << std::endl; std::cout << "OnVSync: " << timestamp << std::endl;
} }
OH_NativeVSync_FrameCallback callback = OnVSync; // The callback function must be of the OH_NativeVSync_FrameCallback type. OH_NativeVSync_FrameCallback callback = OnVSync; // The callback function must be of the OH_NativeVSync_FrameCallback type.
``` ```
2. Create an **OH_NativeVSync** instance. 2. Create an **OH_NativeVSync** instance.
```c++ ```c++
char name[] = "hello_vsync"; char name[] = "hello_vsync";
OH_NativeVSync* nativeVSync = OH_NativeVSync_Create(name, strlen(name)); OH_NativeVSync* nativeVSync = OH_NativeVSync_Create(name, strlen(name));
``` ```
3. Set the VSync callback function through the **OH_NativeVSync** instance. 3. Set the VSync callback function through the **OH_NativeVSync** instance.
```c++ ```c++
......
...@@ -11,11 +11,11 @@ The following scenarios are common for NativeWindow development: ...@@ -11,11 +11,11 @@ The following scenarios are common for NativeWindow development:
## Available APIs ## Available APIs
| API| Description| | API| Description|
| -------- | -------- | | -------- | -------- |
| OH_NativeWindow_NativeWindowRequestBuffer (OHNativeWindow \*window, OHNativeWindowBuffer \*\*buffer, int \*fenceFd) | Requests an **OHNativeWindowBuffer** through an **OHNativeWindow** instance for content production.| | OH_NativeWindow_NativeWindowRequestBuffer (OHNativeWindow \*window, OHNativeWindowBuffer \*\*buffer, int \*fenceFd) | Requests an **OHNativeWindowBuffer** through an **OHNativeWindow** instance for content production.|
| OH_NativeWindow_NativeWindowFlushBuffer (OHNativeWindow \*window, OHNativeWindowBuffer \*buffer, int fenceFd, Region region) | Flushes the **OHNativeWindowBuffer** filled with the content to the buffer queue through an **OHNativeWindow** instance for content consumption.| | OH_NativeWindow_NativeWindowFlushBuffer (OHNativeWindow \*window, OHNativeWindowBuffer \*buffer, int fenceFd, Region region) | Flushes the **OHNativeWindowBuffer** filled with the content to the buffer queue through an **OHNativeWindow** instance for content consumption.|
| OH_NativeWindow_NativeWindowHandleOpt (OHNativeWindow \*window, int code,...) | Sets or obtains the attributes of an **OHNativeWindow**, including the width, height, and content format.| | OH_NativeWindow_NativeWindowHandleOpt (OHNativeWindow \*window, int code,...) | Sets or obtains the attributes of an **OHNativeWindow**, including the width, height, and content format.|
For details about the APIs, see [native_window](../reference/native-apis/_native_window.md). For details about the APIs, see [native_window](../reference/native-apis/_native_window.md).
...@@ -37,7 +37,7 @@ libnative_window.so ...@@ -37,7 +37,7 @@ libnative_window.so
#include <native_window/external_window.h> #include <native_window/external_window.h>
``` ```
1. Obtain an **OHNativeWindow** instance. 1. Obtain an **OHNativeWindow** instance.
You can call the APIs provided by [OH_NativeXComponent_Callback](../reference/native-apis/_o_h___native_x_component___callback.md) to obtain an **OHNativeWindow** instance. An example code snippet is provided below. For details about how to use the **\<XComponent>**, see [XComponent Development](xcomponent-guidelines.md). You can call the APIs provided by [OH_NativeXComponent_Callback](../reference/native-apis/_o_h___native_x_component___callback.md) to obtain an **OHNativeWindow** instance. An example code snippet is provided below. For details about how to use the **\<XComponent>**, see [XComponent Development](xcomponent-guidelines.md).
1. Add an **\<XComponent>** to the .ets file. 1. Add an **\<XComponent>** to the .ets file.
...@@ -159,5 +159,3 @@ libnative_window.so ...@@ -159,5 +159,3 @@ libnative_window.so
// munmap failed // munmap failed
} }
``` ```
<!--no_check-->
\ No newline at end of file
...@@ -18,6 +18,15 @@ For details about the APIs, see [Vulkan](../reference/native-lib/third_party_vul ...@@ -18,6 +18,15 @@ For details about the APIs, see [Vulkan](../reference/native-lib/third_party_vul
The following steps illustrate how to create a **VkSurfaceKHR** instance. The following steps illustrate how to create a **VkSurfaceKHR** instance.
**Adding Dynamic Link Libraries**
Add the following libraries to **CMakeLists.txt**:
```txt
libace_ndk.z.so
libnative_window.so
libvulkan.so
```
**Header File** **Header File**
```c++ ```c++
#include <ace/xcomponent/native_interface_xcomponent.h> #include <ace/xcomponent/native_interface_xcomponent.h>
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册