1.一種針對APP與Unity實(shí)時渲染視頻幀紋理的方法,其特征在于:APP通過NDK與C++代
碼交互,通過C++渲染函數(shù)直接將視頻幀紋理渲染至Unity內(nèi)部紋理,C++通過共享紋理的方
S3、APP端調(diào)用C++函數(shù)初始化渲染環(huán)境,創(chuàng)建一個新的渲染上下文,APP端調(diào)用C++函
S4、Unity端調(diào)用APP端C++函數(shù)創(chuàng)建一個TEXTURE類型的紋理,并將紋理句柄返回給
S5、APP端解碼視頻幀圖片數(shù)據(jù),APP端調(diào)用C++函數(shù)將視頻解碼成幀圖片數(shù)據(jù);
S6、APP端將解碼視頻幀圖片數(shù)據(jù)綁定到TEXTURE類型的紋理,并設(shè)置布爾類型變量是
否綁定新一幀的數(shù)據(jù),當(dāng)指定幀解碼完成時,通過C++調(diào)用函數(shù)將幀圖片數(shù)據(jù)綁定至
S7、Unity端繪制視頻幀紋理:Unity端自動刷新紋理,調(diào)用APP端布爾變量,如果變量為
S8、Unity端繪制函數(shù)返回,不進(jìn)行繪制:Unity端自動刷新紋理,調(diào)用APP端布爾變量如
本發(fā)明涉及視頻幀渲染技術(shù)領(lǐng)域,特別涉及Unity 3D的渲染技術(shù)領(lǐng)域,尤指一種
3D實(shí)時渲染視頻幀紋理的方法。其可廣泛應(yīng)用于移動端Unity 3D動畫視頻功能的開發(fā)。
目前為了使APP讀取的視頻幀圖片顯示在Unity 3D界面中并完成實(shí)時渲染紋理和
實(shí)時渲染時,APP與Unity以字符串的方式交互變量值,APP將視頻幀解碼為圖片數(shù)
據(jù),再轉(zhuǎn)碼為base64字符串,傳送給Unity腳本函數(shù),Unity腳本函數(shù)將base64字符串轉(zhuǎn)換為
渲染視頻保存時,Unity腳本函數(shù)將GPU顯存內(nèi)的紋理圖片拷貝到內(nèi)存,轉(zhuǎn)碼為
base64字符串?dāng)?shù)據(jù)后再傳送給APP,APP將base64字符串?dāng)?shù)據(jù)轉(zhuǎn)碼為幀圖片數(shù)據(jù)后,將幀圖
利用Unity SDK接口函數(shù)與APP交互變量值,只能通過base64字符串?dāng)?shù)據(jù)的方式傳
輸幀圖片數(shù)據(jù),多次轉(zhuǎn)碼、解碼,渲染效率低,無法滿足實(shí)時渲染視頻幀圖片的需求。亟待改
型化開發(fā)環(huán)境為首要方式,編譯器運(yùn)行在Windows 和Mac OS X下,可發(fā)布游戲至Windows、
Wii、OSX、iOS或HTML5等眾多平臺。此外,Unity 還是被廣泛用于建筑可視化、實(shí)時三維動畫
于為特定的軟件包、軟件框架、硬件平臺、操作系統(tǒng)等建立應(yīng)用軟件的開發(fā)工具的集合。它
可以簡單地為某個編程語言提供應(yīng)用程序接口的一些文件,但也可能包括能與某種嵌入式
APP(APPlication,手機(jī)軟件)是指安裝在智能手機(jī)上的軟件,需要有相應(yīng)的手機(jī)
系統(tǒng)來運(yùn)行。其主要功能是完善原始系統(tǒng)的不足與個性化,使手機(jī)功能更加完善,為用戶提
本發(fā)明的目的在于提供一種針對APP與Unity實(shí)時渲染視頻幀紋理的方法,是一種
高效的移動端Unity 3D視頻渲染技術(shù),解決了現(xiàn)有技術(shù)存在的移動端Unity 3D渲染效率低
針對APP與Unity實(shí)時渲染視頻幀紋理的方法,APP通過NDK與C++代碼交互,通過C+
+渲染函數(shù)直接將視頻幀紋理渲染至Unity內(nèi)部紋理,C++通過共享紋理的方式,使Unity與
S3、APP端調(diào)用C++函數(shù)初始化渲染環(huán)境,創(chuàng)建一個新的渲染上下文,APP端調(diào)用C++
S4、九游娛樂中心Unity端調(diào)用APP端C++函數(shù)創(chuàng)建一個TEXTURE類型的紋理,并將紋理句柄返回
S5、APP端解碼視頻幀圖片數(shù)據(jù),APP端調(diào)用C++函數(shù)將視頻解碼成幀圖片數(shù)據(jù);
S6、APP端將解碼視頻幀圖片數(shù)據(jù)綁定到TEXTURE類型的紋理,并設(shè)置布爾類型變
量是否綁定新一幀的數(shù)據(jù),當(dāng)指定幀解碼完成時,通過C++調(diào)用函數(shù)將幀圖片數(shù)據(jù)綁定至
S7、Unity端繪制視頻幀紋理:Unity端自動刷新紋理,調(diào)用APP端布爾變量,如果變
S8、Unity端繪制函數(shù)返回,不進(jìn)行繪制:Unity端自動刷新紋理,調(diào)用APP端布爾變
本發(fā)明的有益效果在于:本發(fā)明提供了一種高效的移動端Unity 3D視頻渲染方
法,不需要轉(zhuǎn)碼、解碼字符串?dāng)?shù)據(jù),視頻幀圖片數(shù)據(jù)添加到GPU顯存后,APP與Unity直接通過
紋理句柄操作渲染紋理,節(jié)省多次內(nèi)存到GPU顯存的拷貝時間,在外部條件形同的情況下,
一幀Unity 3D的圖像渲染時間縮短了30%,滿足實(shí)時渲染視頻幀圖片的需求,并降低了程序
下面將結(jié)合附圖,對本發(fā)明實(shí)施例中的技術(shù)方案進(jìn)行清楚、完整地描述,顯然,所
描述的實(shí)施例僅僅是本發(fā)明一部分實(shí)施例,而不是全部的實(shí)施例?;诒景l(fā)明中的實(shí)施例,
本領(lǐng)域普通技術(shù)人員在沒有做出創(chuàng)造性勞動前提下所獲得的所有其他實(shí)施例,都屬于本發(fā)
明保護(hù)的范圍。為使本發(fā)明的上述目的、特征和優(yōu)點(diǎn)能夠更加明顯易懂,下面結(jié)合附圖和具
S1、創(chuàng)建C++類,該類負(fù)責(zé)完成APP與Unity的共享上下文的創(chuàng)建、紋理的創(chuàng)建以及
S3、Unity端渲染引擎根據(jù)事先制作好的游戲素材進(jìn)行初始化,創(chuàng)建用于共享的上
S4、APP端收到Unity端共享上下文創(chuàng)建完成后,調(diào)用c++函數(shù)從內(nèi)存中讀取Unity
端渲染引擎初始化后的上下文,在C++端完成上下文解析后,再次寫入內(nèi)存供后續(xù)使用;
S5、APP端調(diào)用c++函數(shù)初始化渲染環(huán)境,創(chuàng)建一個新的渲染上下文,寫入內(nèi)存供后
S6、APP端調(diào)用C++的共享紋理函數(shù),將S3中Unity創(chuàng)建的上下文共享到S4中創(chuàng)建的
渲染環(huán)境中,就完成了APP與Unity的游戲共享渲染環(huán)境的創(chuàng)建,創(chuàng)建時間縮短了30%。
S1、準(zhǔn)備紋理的像素數(shù)據(jù),在C++類中保存數(shù)據(jù)至imageData變量中;
S3、調(diào)用OpenGL中的glBindTexture函數(shù)綁定S2中生成的句柄,其中指定紋理類型
S5、Unity端調(diào)用C++端S1至S4過程,獲取到紋理句柄,Unity端根據(jù)紋理句柄即能
S1、APP端解碼視頻幀圖片數(shù)據(jù):APP端調(diào)用C++函數(shù)將視頻解碼成幀圖片數(shù)據(jù)。
S2、APP端將解碼視頻幀圖片數(shù)據(jù)綁定到S4生成的紋理上,并設(shè)置布爾類型變量是
否綁定新一幀的數(shù)據(jù),當(dāng)指定幀解碼完成時,通過C++調(diào)用紋理綁定函數(shù),將幀圖片數(shù)據(jù)綁
S3、Unity端繪制視頻幀紋理:Unity端調(diào)用自動刷新紋理函數(shù),調(diào)用APP端布爾變
S4、Unity端繪制函數(shù)返回,不進(jìn)行繪制:Unity端調(diào)用自動刷新紋理函數(shù),調(diào)用APP
S5、視頻播放時循環(huán)執(zhí)行S1?S4步驟,直至視頻播放完成,渲染時間縮短了30%。
人員來說,本發(fā)明可以有各種更改和變化。凡對本發(fā)明所作的任何修改、等同替換、改進(jìn)等,