亚洲狠狠干,亚洲国产福利精品一区二区,国产八区,激情文学亚洲色图

一種圖像渲染方法和圖像渲染系統(tǒng)的制作方法

文檔序號:9668224閱讀:426來源:國知局
一種圖像渲染方法和圖像渲染系統(tǒng)的制作方法
【技術(shù)領(lǐng)域】
[0001]本發(fā)明涉及計(jì)算機(jī)領(lǐng)域,尤其涉及一種圖像渲染方法和圖像渲染系統(tǒng)。
【背景技術(shù)】
[0002]在移動互聯(lián)網(wǎng)應(yīng)用日新月異的今天,用戶對應(yīng)用界面炫酷的特效表現(xiàn)要求越來越高,許多搶眼的特效會大大增強(qiáng)用戶的認(rèn)知和使用體驗(yàn),產(chǎn)生過目不忘的流暢感受,但是這些繁雜的特效如果沒有經(jīng)過較好的優(yōu)化常常會在運(yùn)行時消耗很多的中央處理器(CPU,Central Processing Unit),耗電相對變快,造成整個應(yīng)用卡頓,這是跟整個產(chǎn)品交互設(shè)計(jì)初衷相違背的。
[0003]在游戲引擎領(lǐng)域,積累了不少三角形圖像計(jì)算法、圖形處理器(GPU,GraphicsProcessing Unit)加速清染、預(yù)計(jì)算局部清染范圍等特效清染的優(yōu)化手段和相關(guān)經(jīng)驗(yàn),但是這些想法和技術(shù)通常被運(yùn)用在需要復(fù)雜圖形計(jì)算的3D游戲或大型角色扮演游戲(RPG,Role-playing game)中,而且對開發(fā)者的門濫要求較高;在移動終端(如手機(jī))上的原生應(yīng)用APP為了降低開發(fā)門檻都把這類接口封裝的非常底層,使得在手機(jī)原生框架上開發(fā)應(yīng)用的速度相對游戲框架而言更快,然而性能沒有游戲應(yīng)用那么高。
[0004]如何降低開發(fā)門檻的同時,實(shí)現(xiàn)高性能的原生應(yīng)用特效,解決現(xiàn)有技術(shù)中繁雜的特效會降低CPU的運(yùn)算壓力,導(dǎo)致整個應(yīng)用卡頓且耗電過快的技術(shù)問題,是人們關(guān)注的熱點(diǎn)。

【發(fā)明內(nèi)容】

[0005]本發(fā)明實(shí)施例所要解決的技術(shù)問題在于,提供一種圖像渲染方法和圖像渲染系統(tǒng),解決了現(xiàn)有技術(shù)中繁雜的特效會降低CPU的運(yùn)算壓力,導(dǎo)致整個應(yīng)用卡頓且耗電過快的技術(shù)問題。
[0006]為了解決上述技術(shù)問題,本發(fā)明實(shí)施例第一方面公開了一種圖像渲染方法,包括:
[0007]讀取當(dāng)前需渲染的特效對象,根據(jù)預(yù)先注冊所述特效對象時切片保存的顯示數(shù)據(jù),確定當(dāng)前幀以及下一幀需要渲染的局部區(qū)域;
[0008]通過預(yù)計(jì)算渲染器將所述局部區(qū)域在畫布中擦除,并對所述中央處理器內(nèi)存CpuRes中當(dāng)前幀對應(yīng)的第一類型顯示數(shù)據(jù)進(jìn)行預(yù)計(jì)算渲染,得到預(yù)計(jì)算圖形;
[0009]通過預(yù)設(shè)的底層圖形庫渲染器對圖形處理器內(nèi)存GpuRes中當(dāng)前幀對應(yīng)的第二類型顯示數(shù)據(jù)進(jìn)行渲染,并與所述預(yù)計(jì)算圖形進(jìn)行合并渲染,得到當(dāng)前幀完整的顯示圖像;
[0010]其中,所述當(dāng)前幀需要渲染的局部區(qū)域包括所述第一類型顯示數(shù)據(jù)和所述第二類型顯示數(shù)據(jù),所述第一類型顯示數(shù)據(jù)小于所述第二類型顯示數(shù)據(jù)。該底層圖形庫可以為比原生APP更加底層的開放圖形庫(0penGL,0pen Graphics Library),并通過外觀模式封裝成對上層友好的特效圖像庫,降低了開發(fā)門檻,使得應(yīng)用開發(fā)者可以輕松開發(fā)出高性能的原生應(yīng)用特效。
[0011]結(jié)合第一方面,在第一種可能的實(shí)現(xiàn)方式中,在所述讀取當(dāng)前需渲染的特效對象之前,還包括:
[0012]在將所述特效對象注冊到圖形引擎時,計(jì)算所述特效對象每一幀中有效的顯示數(shù)據(jù),并對所述顯示數(shù)據(jù)進(jìn)行切片;
[0013]將切片后的第一類型顯示數(shù)據(jù)保存在CpuRes中,將切片后的第二類型顯示數(shù)據(jù)保存在GpuRes中。
[0014]結(jié)合第一方面的第一種可能的實(shí)現(xiàn)方式,在第二種可能的實(shí)現(xiàn)方式中,所述對所述顯示數(shù)據(jù)進(jìn)行切片之后,還包括:將切片后需要渲染的區(qū)域信息保存在擦除內(nèi)存ClearRes 中;
[0015]所述根據(jù)預(yù)先注冊所述特效對象時切片保存的顯示數(shù)據(jù),確定當(dāng)前幀以及下一幀需要渲染的局部區(qū)域,包括:根據(jù)所述ClearRes中保存的當(dāng)前幀以及下一幀的需要渲染的區(qū)域信息,確認(rèn)當(dāng)前幀以及下一幀需要渲染的局部區(qū)域。
[0016]結(jié)合第一方面的第一種可能的實(shí)現(xiàn)方式,在第三種可能的實(shí)現(xiàn)方式中,所述計(jì)算所述特效對象每一幀中有效的顯示數(shù)據(jù),并對所述顯示數(shù)據(jù)進(jìn)行切片;將切片后的第一類型顯示數(shù)據(jù)保存在CpuRes中,將切片后的第二類型顯示數(shù)據(jù)保存在GpuRes中,包括:
[0017]采用三角形圖像計(jì)算法計(jì)算所述特效對象每一幀中有效的顯示數(shù)據(jù),并對所述顯示數(shù)據(jù)進(jìn)行三角形切片;
[0018]將小于第一預(yù)設(shè)閾值的三角形切片的顯示數(shù)據(jù)保存在CpuRes中,將大于第二預(yù)設(shè)閾值的三角形切片的顯示數(shù)據(jù)保存在GpuRes中;
[0019]其中所述小于第一預(yù)設(shè)閾值的三角形切片的顯示數(shù)據(jù)為所述第一類型顯示數(shù)據(jù),所述大于第二預(yù)設(shè)閾值的三角形切片的顯示數(shù)據(jù)為所述第二類型顯示數(shù)據(jù);所述第一預(yù)設(shè)閾值小于或等于所述第二預(yù)設(shè)閾值。
[0020]結(jié)合第一方面,在第四種可能的實(shí)現(xiàn)方式中,在所述確定當(dāng)前幀以及下一幀需要渲染的局部區(qū)域之前,還包括:
[0021]預(yù)計(jì)算所述當(dāng)前幀k渲染所需的時間Τκ,以及所述當(dāng)前幀往下第一幀k+Ι渲染所需的時間Τκ+1;
[0022]當(dāng)所述^大于所述Τκ+1時,預(yù)計(jì)算所述當(dāng)前幀往下第二幀k+2渲染所需的時間Τκ+2,當(dāng)所述IVJ、于所述T K+1時,將所述當(dāng)前幀往下第一幀k+Ι作為所述下一幀;
[0023]當(dāng)所述IVj、于所述Τ K+1與所述Τ κ+2之和時,將所述當(dāng)前幀往下第二幀k+2作為所述下一幀;當(dāng)所述^大于所述Τ K+1與Τ κ+2之和時,預(yù)計(jì)算所述當(dāng)前幀往下第三幀k+3清染所需的時間Τκ+3,直到滿足公式TK〈TK+1+TK+2...+Τκ+η時,所述Τ κ+η為所述當(dāng)前幀往下第η幀k+n渲染所需的時間,其中所述η為大于2的自然數(shù),將所述當(dāng)前幀往下第η幀k+n作為所述下一幀。
[0024]結(jié)合第一方面,或者第一方面的第一種可能的實(shí)現(xiàn)方式,或者第一方面的第二種可能的實(shí)現(xiàn)方式,或者第一方面的第三種可能的實(shí)現(xiàn)方式,或者第一方面的第四種可能的實(shí)現(xiàn)方式,在第五種可能的實(shí)現(xiàn)方式中,所述得到當(dāng)前幀完整的顯示圖像之后,將所述下一幀作為當(dāng)前幀并繼續(xù)執(zhí)行所述根據(jù)預(yù)先注冊所述特效對象時切片保存的顯示數(shù)據(jù),確定當(dāng)前幀以及下一幀需要渲染的局部區(qū)域的步驟。
[0025]結(jié)合第一方面的第五種可能的實(shí)現(xiàn)方式,在第六種可能的實(shí)現(xiàn)方式中,當(dāng)對所述特效對象渲染完成后,在特效隊(duì)列中將所述特效對象銷毀,并從所述特效隊(duì)列中讀取下一個需要渲染的特效對象。
[0026]本發(fā)明實(shí)施例第二方面公開了一種圖像渲染系統(tǒng),包括:
[0027]讀取模塊,用于讀取當(dāng)前需渲染的特效對象;
[0028]區(qū)域確定模塊,用于根據(jù)預(yù)先注冊所述特效對象時切片保存的顯示數(shù)據(jù),確定當(dāng)前幀以及下一幀需要渲染的局部區(qū)域;
[0029]預(yù)計(jì)算渲染模塊,用于通過預(yù)計(jì)算渲染器將所述局部區(qū)域在畫布中擦除,并對所述中央處理器內(nèi)存CpuRes中當(dāng)前幀對應(yīng)的第一類型顯示數(shù)據(jù)進(jìn)行預(yù)計(jì)算渲染,得到預(yù)計(jì)算圖形;
[0030]合并渲染模塊,用于通過預(yù)設(shè)的底層圖形庫渲染器對圖形處理器內(nèi)存GpuRes中當(dāng)前幀對應(yīng)的第二類型顯示數(shù)據(jù)進(jìn)行渲染,并與所述預(yù)計(jì)算圖形進(jìn)行合并渲染,得到當(dāng)前幀完整的顯不圖像;
[0031]其中,所述當(dāng)前幀需要渲染的局部區(qū)域包括所述第一類型顯示數(shù)據(jù)和所述第二類型顯示數(shù)據(jù),所述第一類型顯示數(shù)據(jù)小于所述第二類型顯示數(shù)據(jù)。
[0032]結(jié)合第二方面,在第一種可能的實(shí)現(xiàn)方式中,還包括:
[0033]計(jì)算切片模塊,用于在所述讀取模塊讀取當(dāng)前需渲染的特效對象之前,在將所述特效對象注冊到圖形引擎時,計(jì)算所述特效對象每一幀中有效的顯示數(shù)據(jù),并對所述顯示數(shù)據(jù)進(jìn)行切片;
[0034]數(shù)據(jù)保存模塊,用于將切片后的第一類型顯示數(shù)據(jù)保存在CpuRes中,將切片后的第二類型顯示數(shù)據(jù)保存在GpuRes中。
[0035]結(jié)合第二方面的第一種可能的實(shí)現(xiàn)方式,在第二種可能的實(shí)現(xiàn)方式中,所述數(shù)據(jù)保存模塊還用于,在所述計(jì)算切片模塊對所述顯示數(shù)據(jù)進(jìn)行切片之后,將切片后需要渲染的區(qū)域信息保存在擦除內(nèi)存ClearRes中;
[0036]所述區(qū)域確定模塊具體用于,根據(jù)所述ClearRes中保存的當(dāng)前幀以及下一幀的需要渲染的區(qū)域信息,確認(rèn)當(dāng)前幀以及下一幀需要渲染的局部區(qū)域。
[0037]結(jié)合第二方面的第一種可能的實(shí)現(xiàn)方式,在第三種可能的實(shí)現(xiàn)方式中,所述計(jì)算切片模塊具體用于采用三角形圖像計(jì)算法計(jì)算所述特效對象每一幀中有效的顯示數(shù)據(jù),并對所述顯示數(shù)據(jù)進(jìn)行三角形切片;
[0038]所述數(shù)據(jù)保存模塊具體用于,將小于第一預(yù)設(shè)閾值的三角形切片的顯示數(shù)據(jù)保存在CpuRes中,將大于第二預(yù)設(shè)閾值的三角形切片的顯示數(shù)據(jù)保存在GpuRes中;
[0039]其中所述小于第一預(yù)設(shè)閾值的三角形切片的顯示數(shù)據(jù)為所述第一類型顯示數(shù)據(jù),所述大于第二預(yù)設(shè)閾值的三角形切片的顯示數(shù)據(jù)為所述第二類型顯示數(shù)據(jù);所述第一預(yù)設(shè)閾值小于或等于所述第二預(yù)設(shè)閾值。
[0040]結(jié)合第二方面,在第四種可能的實(shí)現(xiàn)方式中,還包括:
[0041]時間預(yù)計(jì)算模塊,用于在所述區(qū)域確定模塊確定當(dāng)前幀以及下一幀需要渲染的局部區(qū)域之前,預(yù)計(jì)算所述當(dāng)前幀k渲染所需的時間Τκ,以及所述當(dāng)前幀往下第一幀k+Ι渲染所需的時間Τκ+1;
[0042]當(dāng)所述^大于所述Τ K+1時,所述時間預(yù)計(jì)算模塊還用于預(yù)計(jì)算所述當(dāng)前幀往下第二幀k+2渲染所需的時間Τκ+2,當(dāng)所述IVj、于所述Τ K+1時,將所述當(dāng)前幀往下第一幀k+Ι作為所述下一幀;
[0043]當(dāng)所述IVj、于所述Τ K+1與所述Τ κ+2之和時,將所述當(dāng)前幀往下第二幀k+2作為所述下一幀;當(dāng)所述^大于所述T K+1與τ κ+2之
當(dāng)前第1頁1 2 3 4 5 
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會獲得點(diǎn)贊!
1