天天爱天天做天天爽_小可爱社区论坛在线观看_成年免费a级毛片无码_男同志王伦宝chinese3

服務(wù)熱線熱線:

13818745178

九游(ninegame)娛樂(lè)中國(guó)官方網(wǎng)頁(yè)-企業(yè)入口

行業(yè)洞察

針對(duì)APP與Unity實(shí)時(shí)渲染視頻幀紋理的方法與流程

發(fā)布時(shí)間:2025-04-24點(diǎn)擊次數(shù):

  九游娛樂(lè)中心1.本發(fā)明涉及視頻幀渲染技術(shù)領(lǐng)域,特別涉及unity 3d的渲染技術(shù)領(lǐng)域,尤指一種針對(duì)與unity實(shí)時(shí)渲染視頻幀紋理的方法,是一種在android和ios系統(tǒng)中的與unity 3d實(shí)時(shí)渲染視頻幀紋理的方法。其可廣泛應(yīng)用于移動(dòng)端unity 3d動(dòng)畫(huà)視頻功能的開(kāi)發(fā)。

  2.目前為了使讀取的視頻幀圖片顯示在unity 3d界面中并完成實(shí)時(shí)渲染紋理和視頻保存時(shí),通常采用調(diào)用unity sdk接口函數(shù)的方式。

  3.實(shí)時(shí)渲染時(shí),與unity以字符串的方式交互變量值,將視頻幀解碼為圖片數(shù)據(jù),再轉(zhuǎn)碼為base64字符串,傳送給unity腳本函數(shù),unity腳本函數(shù)將base64字符串轉(zhuǎn)換為幀圖片數(shù)據(jù)后添加到gpu顯存并渲染圖片。

  4.渲染視頻保存時(shí),unity腳本函數(shù)將gpu顯存內(nèi)的紋理圖片拷貝到內(nèi)存,轉(zhuǎn)碼為base64字符串?dāng)?shù)據(jù)后再傳送給,將base64字符串?dāng)?shù)據(jù)轉(zhuǎn)碼為幀圖片數(shù)據(jù)后,將幀圖片數(shù)據(jù)轉(zhuǎn)為視頻幀數(shù)據(jù)并寫(xiě)入視頻文件。

  5.利用unity sdk接口函數(shù)與交互變量值,只能通過(guò)base64字符串?dāng)?shù)據(jù)的方式傳輸幀圖片數(shù)據(jù),多次轉(zhuǎn)碼、解碼,渲染效率低,無(wú)法滿足實(shí)時(shí)渲染視頻幀圖片的需求。亟待改進(jìn)。

  6.unity是一款由unity technologies研發(fā)的跨平臺(tái)2d/3d游戲引擎。它以交互的圖型化開(kāi)發(fā)環(huán)境為首要方式,編譯器運(yùn)行在windows 和mac os x下,可發(fā)布游戲至windows、wii、osx、ios或html5等眾多平臺(tái)。此外,unity 還是被廣泛用于建筑可視化、實(shí)時(shí)三維動(dòng)畫(huà)等類型互動(dòng)內(nèi)容的綜合型創(chuàng)作工具。

  7.sdk(software development kit,軟件開(kāi)發(fā)工具包),一般是一些被軟件工程師用于為特定的軟件包、軟件框架、硬件平臺(tái)、操作系統(tǒng)等建立應(yīng)用軟件的開(kāi)發(fā)工具的集合。它可以簡(jiǎn)單地為某個(gè)編程語(yǔ)言提供應(yīng)用程序接口的一些文件,但也可能包括能與某種嵌入式系統(tǒng)通訊的復(fù)雜的硬件。

  8.(lication,手機(jī)軟件)是指安裝在智能手機(jī)上的軟件,需要有相應(yīng)的手機(jī)系統(tǒng)來(lái)運(yùn)行。其主要功能是完善原始系統(tǒng)的不足與個(gè)性化,使手機(jī)功能更加完善,為用戶提供更豐富的使用體驗(yàn)。

  10.ndk(native development kit)稱為本機(jī)開(kāi)發(fā)套件,是一種開(kāi)發(fā)工具,開(kāi)發(fā)者使用該套件可以運(yùn)用c / c ++為android設(shè)備編程。

  14.本發(fā)明的目的在于提供一種針對(duì)與unity實(shí)時(shí)渲染視頻幀紋理的方法,是一種高效的移動(dòng)端unity 3d視頻渲染技術(shù),解決了現(xiàn)有技術(shù)存在的移動(dòng)端unity 3d渲染效率低的問(wèn)題。

  15.本發(fā)明的上述目的通過(guò)以下技術(shù)方案實(shí)現(xiàn):針對(duì)與unity實(shí)時(shí)渲染視頻幀紋理的方法,通過(guò)ndk與c++代碼交互,通過(guò)c++渲染函數(shù)直接將視頻幀紋理渲染至unity內(nèi)部紋理,c++通過(guò)共享紋理的方式,使unity與同時(shí)使用一個(gè)紋理進(jìn)行渲染;包括如下步驟:s1、unity端導(dǎo)出sdk,端導(dǎo)入unity sdk和c++ ndk;s2、端調(diào)用c++函數(shù)獲取unity端渲染引擎初始化后的上下文;s3、端調(diào)用c++函數(shù)初始化渲染環(huán)境,創(chuàng)建一個(gè)新的渲染上下文,端調(diào)用c++函數(shù),創(chuàng)建一個(gè)unity端與共享的上下文環(huán)境;s4、unity端調(diào)用端c++函數(shù)創(chuàng)建一個(gè)texture類型的紋理,并將紋理句柄返回給unity端;s5、端解碼視頻幀圖片數(shù)據(jù),端調(diào)用c++函數(shù)將視頻解碼成幀圖片數(shù)據(jù);s6、端將解碼視頻幀圖片數(shù)據(jù)綁定到texture類型的紋理,并設(shè)置布爾類型變量是否綁定新一幀的數(shù)據(jù),當(dāng)指定幀解碼完成時(shí),通過(guò)c++調(diào)用函數(shù)將幀圖片數(shù)據(jù)綁定至texture類型的紋理,并設(shè)置布爾變量為true;s7、unity端繪制視頻幀紋理:unity端自動(dòng)刷新紋理,調(diào)用端布爾變量,如果變量為true時(shí),unity端根據(jù)紋理句柄將紋理繪制在屏幕上;s8、unity端繪制函數(shù)返回,不進(jìn)行繪制:unity端自動(dòng)刷新紋理,調(diào)用端布爾變量如果變量為false時(shí),函數(shù)返回,不進(jìn)行繪制;s9、視頻播放時(shí)循環(huán)執(zhí)行步驟s5~s8,直至視頻播放完成。

  16.本發(fā)明的有益效果在于:本發(fā)明提供了一種高效的移動(dòng)端unity 3d視頻渲染方法,不需要轉(zhuǎn)碼、解碼字符串?dāng)?shù)據(jù),視頻幀圖片數(shù)據(jù)添加到gpu顯存后,與unity直接通過(guò)紋理句柄操作渲染紋理,節(jié)省多次內(nèi)存到gpu顯存的拷貝時(shí)間,在外部條件形同的情況下,一幀unity 3d的圖像渲染時(shí)間縮短了30%,滿足實(shí)時(shí)渲染視頻幀圖片的需求,并降低了程序的復(fù)雜度,使軟件架構(gòu)更簡(jiǎn)潔。

  17.此處所說(shuō)明的附圖用來(lái)提供對(duì)本發(fā)明的進(jìn)一步理解,構(gòu)成本技術(shù)的一部分,本發(fā)明的示意性實(shí)例及其說(shuō)明用于解釋本發(fā)明,并不構(gòu)成對(duì)本發(fā)明的不當(dāng)限定。

  19.下面將結(jié)合附圖,對(duì)本發(fā)明實(shí)施例中的技術(shù)方案進(jìn)行清楚、完整地描述,顯然,所描述的實(shí)施例僅僅是本發(fā)明一部分實(shí)施例,而不是全部的實(shí)施例?;诒景l(fā)明中的實(shí)施例,本領(lǐng)域普通技術(shù)人員在沒(méi)有做出創(chuàng)造性勞動(dòng)前提下所獲得的所有其他實(shí)施例,都屬于本發(fā)明保護(hù)的范圍。為使本發(fā)明的上述目的、特征和優(yōu)點(diǎn)能夠更加明顯易懂,下面結(jié)合附圖和具

  20.實(shí)施例1:本發(fā)明針對(duì)與unity共享渲染環(huán)境創(chuàng)建的方法,具體流程是:s1、創(chuàng)建c++類,該類負(fù)責(zé)完成與unity的共享上下文的創(chuàng)建、紋理的創(chuàng)建以及視頻幀的解碼工作;s2、unity端選擇平臺(tái)(android或ios)導(dǎo)出sdk,端通過(guò)集成開(kāi)發(fā)環(huán)境導(dǎo)入unity端導(dǎo)出的sdk和已經(jīng)建立的c++類;s3、unity端渲染引擎根據(jù)事先制作好的游戲素材進(jìn)行初始化,創(chuàng)建用于共享的上下文,將其保存在內(nèi)存中,并通知端共享上下文創(chuàng)建完成;s4、端收到unity端共享上下文創(chuàng)建完成后,調(diào)用c++函數(shù)從內(nèi)存中讀取unity端渲染引擎初始化后的上下文,在c++端完成上下文解析后,再次寫(xiě)入內(nèi)存供后續(xù)使用;s5、端調(diào)用c++函數(shù)初始化渲染環(huán)境,創(chuàng)建一個(gè)新的渲染上下文,寫(xiě)入內(nèi)存供后續(xù)使用;s6、端調(diào)用c++的共享紋理函數(shù),將s3中unity創(chuàng)建的上下文共享到s4中創(chuàng)建的渲染環(huán)境中,就完成了與unity的游戲共享渲染環(huán)境的創(chuàng)建,創(chuàng)建時(shí)間縮短了30%。

  21.實(shí)施例2:本發(fā)明針對(duì)與unity共享紋理創(chuàng)建的方法,具體流程是:s1、準(zhǔn)備紋理的像素?cái)?shù)據(jù),在c++類中保存數(shù)據(jù)至imagedata變量中;s2、調(diào)用opengl中的glgentextures函數(shù),生成紋理的句柄;s3、調(diào)用opengl中的glbindtexture函數(shù)綁定s2中生成的句柄,其中指定紋理類型為gl_texture_2d;s4、將調(diào)用opengl中的gltextimage2d,將s1中的像素?cái)?shù)據(jù)imagedata和s2生成的紋理句柄進(jìn)行綁定;s5、unity端調(diào)用c++端s1至s4過(guò)程,獲取到紋理句柄,unity端根據(jù)紋理句柄即能完成對(duì)紋理的各項(xiàng)操作,創(chuàng)建時(shí)間縮短了30%。

  22.實(shí)施例3:本發(fā)明針對(duì)與unity共實(shí)時(shí)渲染完成動(dòng)畫(huà)播放的方法,具體流程是:s1、端解碼視頻幀圖片數(shù)據(jù):端調(diào)用c++函數(shù)將視頻解碼成幀圖片數(shù)據(jù)。

  23.s2、端將解碼視頻幀圖片數(shù)據(jù)綁定到s4生成的紋理上,并設(shè)置布爾類型變量是否綁定新一幀的數(shù)據(jù),當(dāng)指定幀解碼完成時(shí),通過(guò)c++調(diào)用紋理綁定函數(shù),將幀圖片數(shù)據(jù)綁定至s4創(chuàng)建的紋理上,并設(shè)置布爾變量為true。

  24.s3、unity端繪制視頻幀紋理:unity端調(diào)用自動(dòng)刷新紋理函數(shù),調(diào)用端布爾變量如果變量為true時(shí),unity端根據(jù)紋理句柄將紋理繪制在屏幕上。

  25.s4、unity端繪制函數(shù)返回,不進(jìn)行繪制:unity端調(diào)用自動(dòng)刷新紋理函數(shù),調(diào)用端布爾變量如果變量為false時(shí),函數(shù)返回,不進(jìn)行繪制。

  26.s5、視頻播放時(shí)循環(huán)執(zhí)行s1-s4步驟,直至視頻播放完成,渲染時(shí)間縮短了30%。

  27.以上所述僅為本發(fā)明的優(yōu)選實(shí)例而已,并不用于限制本發(fā)明,對(duì)于本領(lǐng)域的技術(shù)人員來(lái)說(shuō),本發(fā)明可以有各種更改和變化。凡對(duì)本發(fā)明所作的任何修改、等同替換、改進(jìn)等,均應(yīng)包含在本發(fā)明的保護(hù)范圍之內(nèi)。

  如您需求助技術(shù)專家,請(qǐng)點(diǎn)此查看客服電線.機(jī)電一體化產(chǎn)品開(kāi)發(fā) 4.機(jī)械工程測(cè)試技術(shù) 5.逆向工程技術(shù)研究

  1.振動(dòng)信號(hào)時(shí)頻分析理論與測(cè)試系統(tǒng)設(shè)計(jì) 2.汽車檢測(cè)系統(tǒng)設(shè)計(jì) 3.汽車電子控制系統(tǒng)設(shè)計(jì)

上一篇:Unity 6引擎將于10月17日正式發(fā)布:為開(kāi)發(fā)者提供可定

返回列表

下一篇:2025年中國(guó)創(chuàng)新影像大賽正式啟動(dòng)