中文亚洲精品无码_熟女乱子伦免费_人人超碰人人爱国产_亚洲熟妇女综合网

當(dāng)前位置: 首頁 > news >正文

重慶有什么好玩的旅游景點(diǎn)寧波seo外包優(yōu)化

重慶有什么好玩的旅游景點(diǎn),寧波seo外包優(yōu)化,苗木推廣做哪個(gè)網(wǎng)站好,端子?xùn)|莞網(wǎng)站建設(shè)場景介紹 NativeWindow 是 HarmonyOS 本地平臺(tái)化窗口,表示圖形隊(duì)列的生產(chǎn)者端。開發(fā)者可以通過 NativeWindow 接口進(jìn)行申請和提交 Buffer,配置 Buffer 屬性信息。 針對 NativeWindow,常見的開發(fā)場景如下: ● 通過 NativeWindow…

場景介紹

NativeWindow 是 HarmonyOS 本地平臺(tái)化窗口,表示圖形隊(duì)列的生產(chǎn)者端。開發(fā)者可以通過 NativeWindow 接口進(jìn)行申請和提交 Buffer,配置 Buffer 屬性信息。

針對 NativeWindow,常見的開發(fā)場景如下:

●?通過 NativeWindow 提供的 Native?API 接口申請圖形 Buffer,并將生產(chǎn)圖形內(nèi)容寫入圖形 Buffer,最終提交 Buffer 到圖形隊(duì)列

●?在適配 EGL 層的 eglswapbuffer 接口時(shí),進(jìn)行申請和提交 Buffer

接口說明

詳細(xì)的接口說明請參考native_window。

開發(fā)步驟

以下步驟描述了在 HarmonyOS 中如何使用 NativeWindow 提供的 Native?API 接口,申請圖形 Buffer,并將生產(chǎn)圖形內(nèi)容寫入圖形 Buffer 后,最終提交 Buffer 到圖形隊(duì)列。

添加動(dòng)態(tài)鏈接庫

CMakeLists.txt 中添加以下 lib。

libace_ndk.z.solibnative_window.so

頭文件

#include?<ace/xcomponent/native_interface_xcomponent.h>#include?<native_window/external_window.h>

1.? 獲取 OHNativeWindow 實(shí)例。

可在OH_NativeXComponent_Callback提供的接口中獲取 OHNativeWindow,下面提供一份代碼示例。XComponent 模塊的具體使用方法請參考XComponent開發(fā)指導(dǎo)。

a.? 在 xxx.ets 中添加一個(gè) XComponent 組件。

XComponent({?id: 'xcomponentId',?type: 'surface',?libraryname: 'entry'})    .width(360)    .height(360)

b.? 在?native?c++?層獲取?NativeXComponent。

napi_value?exportInstance?= nullptr;//?用來解析出被wrap了NativeXComponent指針的屬性napi_get_named_property(env,?exports,?OH_NATIVE_XCOMPONENT_OBJ, &exportInstance);OH_NativeXComponent?*nativeXComponent?= nullptr;//?通過napi_unwrap接口,解析出NativeXComponent的實(shí)例指針napi_unwrap(env,?exportInstance, reinterpret_cast<void**>(&nativeXComponent));//?獲取XComponentIdchar?idStr[OH_XCOMPONENT_ID_LEN_MAX?+ 1] = {};uint64_t?idSize?=?OH_XCOMPONENT_ID_LEN_MAX?+ 1;OH_NativeXComponent_GetXComponentId(nativeXComponent,?idStr, &idSize);

c.? 定義?OH_NativeXComponent_Callback。

//?定義回調(diào)函數(shù)void OnSurfaceCreatedCB(OH_NativeXComponent*?component, void*?window){    //?可獲取?OHNativeWindow?實(shí)例????OHNativeWindow*?nativeWindow?= static_cast<OHNativeWindow*>(window);    //?...}void OnSurfaceChangedCB(OH_NativeXComponent*?component, void*?window){    //?可獲取?OHNativeWindow?實(shí)例????OHNativeWindow*?nativeWindow?= static_cast<OHNativeWindow*>(window);    //?...}void OnSurfaceDestroyedCB(OH_NativeXComponent*?component, void*?window){    //?可獲取?OHNativeWindow?實(shí)例????OHNativeWindow*?nativeWindow?= static_cast<OHNativeWindow*>(window);    //?...}void DispatchTouchEventCB(OH_NativeXComponent*?component, void*?window){    //?可獲取?OHNativeWindow?實(shí)例????OHNativeWindow*?nativeWindow?= static_cast<OHNativeWindow*>(window);    //?...}
//?初始化?OH_NativeXComponent_CallbackOH_NativeXComponent_Callback?callback;callback.OnSurfaceCreated?=?OnSurfaceCreatedCB;callback.OnSurfaceChanged?=?OnSurfaceChangedCB;callback.OnSurfaceDestroyed?=?OnSurfaceDestroyedCB;callback.DispatchTouchEvent?=?DispatchTouchEventCB;

d.? 將?OH_NativeXComponent_Callback?注冊給?NativeXComponent。

//?注冊回調(diào)函數(shù)OH_NativeXComponent_RegisterCallback(nativeXComponent, &callback);

2.? 設(shè)置 OHNativeWindowBuffer 的屬性。使用 OH_NativeWindow_NativeWindowHandleOpt 設(shè)置 OHNativeWindowBuffer 的屬性。

//?設(shè)置?OHNativeWindowBuffer?的寬高
int32_t?code?=?SET_BUFFER_GEOMETRY;
int32_t?width?= 0x100;
int32_t?height?= 0x100;
//?這里的nativeWindow是從上一步驟中的回調(diào)函數(shù)中獲得的
int32_t?ret?= OH_NativeWindow_NativeWindowHandleOpt(nativeWindow,?code,?width,?height);

3.? 從圖形隊(duì)列申請 OHNativeWindowBuffer。

OHNativeWindowBuffer*?buffer?= nullptr;int?fenceFd;//?通過?OH_NativeWindow_NativeWindowRequestBuffer?獲取?OHNativeWindowBuffer?實(shí)例OH_NativeWindow_NativeWindowRequestBuffer(nativeWindow, &buffer, &fenceFd);//?通過?OH_NativeWindow_GetBufferHandleFromNative?獲取?buffer?的?handleBufferHandle*?bufferHandle?= OH_NativeWindow_GetBufferHandleFromNative(buffer);

4.? 內(nèi)存映射 mmap

#include?<sys/mman.h>//?使用系統(tǒng)接口mmap將bufferHandle對應(yīng)的共享內(nèi)存映射到用戶空間,可以通過映射出來的虛擬地址向bufferHandle中寫入圖像數(shù)據(jù)
//?bufferHandle->virAddr是bufferHandle在共享內(nèi)存中的起始地址,bufferHandle->size是bufferHandle在共享內(nèi)存中的內(nèi)存占用大小
void*?mappedAddr?= mmap(bufferHandle->virAddr,?bufferHandle->size,?PROT_READ?|?PROT_WRITE,?MAP_SHARED,?bufferHandle->fd, 0);
if (mappedAddr?==?MAP_FAILED) {//?mmap?failed
}

5.? 將生產(chǎn)的內(nèi)容寫入 OHNativeWindowBuffer。

static uint32_t?value?= 0x00;
value++;
uint32_t *pixel?= static_cast<uint32_t?*>(mappedAddr); //?使用mmap獲取到的地址來訪問內(nèi)存
for (uint32_t?x?= 0;?x?<?width;?x++) {for (uint32_t?y?= 0;??y?<?height;?y++) {*pixel++ =?value;}
}

6.? 提交 OHNativeWindowBuffer 到圖形隊(duì)列。

//?設(shè)置刷新區(qū)域,如果Region中的Rect為nullptr,或者rectNumber為0,則認(rèn)為OHNativeWindowBuffer全部有內(nèi)容更改。
Region?region{nullptr, 0};
//?通過OH_NativeWindow_NativeWindowFlushBuffer?提交給消費(fèi)者使用,例如:顯示在屏幕上。
OH_NativeWindow_NativeWindowFlushBuffer(nativeWindow,?buffer,?fenceFd,?region);

7.? 取消內(nèi)存映射 munmap

//?內(nèi)存使用完記得去掉內(nèi)存映射int?result?= munmap(mappedAddr,?bufferHandle->size);if (result?== -1) {    //?munmap?failed}
http://www.risenshineclean.com/news/31480.html

相關(guān)文章:

  • 濟(jì)南制作網(wǎng)站的公司哪家好汕頭網(wǎng)站建設(shè)優(yōu)化
  • 網(wǎng)站被墻301怎么做付費(fèi)推廣平臺(tái)有哪些
  • 科威網(wǎng)絡(luò)做網(wǎng)站怎么樣html網(wǎng)頁制作app
  • 網(wǎng)站建設(shè)合同是否繳納印花稅中國網(wǎng)站排名查詢
  • 金寨縣建設(shè)規(guī)劃局網(wǎng)站信息流廣告有哪些投放平臺(tái)
  • 做夾具需要知道的幾個(gè)網(wǎng)站企業(yè)網(wǎng)站seo方案
  • 中億豐建設(shè)集團(tuán)股份有限公司網(wǎng)站百度競價(jià)是什么工作
  • 學(xué)做餅干網(wǎng)站發(fā)稿網(wǎng)
  • 行業(yè)門戶網(wǎng)站模板中國剛剛發(fā)生8件大事
  • 如何開發(fā)app小程序win優(yōu)化大師
  • 北京市文化局政務(wù)網(wǎng)站建設(shè)項(xiàng)目獨(dú)立站seo怎么做
  • 深圳網(wǎng)站制作鄭州怎么優(yōu)化網(wǎng)站排名靠前
  • 南通seo公司網(wǎng)站免費(fèi)推廣產(chǎn)品平臺(tái)有哪些
  • 上海奉賢 網(wǎng)站建設(shè)百度指數(shù)查詢移動(dòng)版
  • 廉江網(wǎng)站建設(shè)公眾號推廣合作平臺(tái)
  • html網(wǎng)頁設(shè)計(jì)基礎(chǔ)seo優(yōu)化主要做什么
  • 網(wǎng)站開發(fā)者模式企業(yè)官網(wǎng)建站
  • 學(xué)網(wǎng)站建設(shè)需要什么軟件百度外包公司有哪些
  • 企業(yè)網(wǎng)站建設(shè)參考資料競價(jià)推廣賬戶競價(jià)托管
  • 珠海服務(wù)好的網(wǎng)站建設(shè)武漢seo
  • 江陰做網(wǎng)站百度秒收錄軟件工具
  • 微商網(wǎng)站開發(fā)寧波網(wǎng)站推廣營銷
  • 恒華大廈做網(wǎng)站公司山東做網(wǎng)站
  • 專門教做甜品的網(wǎng)站愛站網(wǎng)關(guān)鍵詞
  • wordpress用qq注冊谷歌seo什么意思
  • 如何做目錄wordpress北京網(wǎng)站優(yōu)化外包
  • 上海 高端 網(wǎng)站建設(shè)我的百度賬號登錄
  • 創(chuàng)新的鹽城網(wǎng)站建設(shè)百度收錄查詢代碼
  • 一步一步教你做網(wǎng)站哪家公司建設(shè)網(wǎng)站好
  • 做網(wǎng)站續(xù)費(fèi)seo概念