一種在移動(dòng)設(shè)備上進(jìn)行圖形渲染的方法和裝置制造方法
【專利摘要】本申請?zhí)峁┝艘环N在移動(dòng)設(shè)備上進(jìn)行圖形渲染的方法和裝置,其中的方法具體包括:獲取圖形應(yīng)用程序的JavaScript代碼;所述JavaScript代碼中包括有基于OPENGL的渲染函數(shù)對應(yīng)的API接口,所述API接口的樣式遵循HTML5?Canvas標(biāo)準(zhǔn);在解析引擎中執(zhí)行所述JavaScript代碼;所述執(zhí)行過程包括:在執(zhí)行到所述JavaScript代碼中的API接口時(shí),使用所述解析引擎將所述API接口解析為相應(yīng)的基于OPENGL的渲染函數(shù);調(diào)用解析得到的渲染函數(shù)對渲染目標(biāo)進(jìn)行圖形渲染。本申請能夠提高移動(dòng)設(shè)備上圖形渲染的速度。
【專利說明】一種在移動(dòng)設(shè)備上進(jìn)行圖形渲染的方法和裝置
【技術(shù)領(lǐng)域】
[0001]本申請涉及圖形渲染【技術(shù)領(lǐng)域】,特別是涉及一種在移動(dòng)設(shè)備上進(jìn)行圖形渲染的方法和裝置。
【背景技術(shù)】
[0002]目前,移動(dòng)設(shè)備上的應(yīng)用越來越豐富,這些應(yīng)用的展現(xiàn)也越來越復(fù)雜,,而這些應(yīng)用在圖形展現(xiàn)時(shí)均離不開圖形渲染,例如手機(jī)設(shè)備上的網(wǎng)頁游戲的圖形展現(xiàn)離不開圖形渲染。圖形渲染是將基于對象的高級描述轉(zhuǎn)換成在某種顯示設(shè)備上顯示的圖形圖像。例如,在將三維物體或場景的數(shù)學(xué)模型轉(zhuǎn)換成位圖圖形的過程中,將發(fā)生圖形渲染的操作。圖形渲染的另一個(gè)實(shí)例是將HTML (超文本標(biāo)記語言,Hypertext Markup Language)文件轉(zhuǎn)換成在計(jì)算機(jī)監(jiān)視器上顯示的圖形。
[0003]圖形渲染在當(dāng)前具有兩大應(yīng)用:
[0004]1、瀏覽器中的應(yīng)用;
[0005]當(dāng)今互聯(lián)網(wǎng)技術(shù)中,HTML5技術(shù)是一項(xiàng)新興熱門技術(shù),使用HTML5技術(shù)中的Canvas標(biāo)準(zhǔn)在瀏覽器中進(jìn)行圖形渲染也逐漸盛行。然而,在大多數(shù)移動(dòng)設(shè)備上,瀏覽器將HTML5Canvas標(biāo)準(zhǔn)當(dāng)做瀏覽器中HTML節(jié)點(diǎn)控件來處理,其排版邏輯、事件、重繪等操作都需要用到HTML的節(jié)點(diǎn)樹,邏輯復(fù)雜,CPU需要處理的運(yùn)算很多;使用上述技術(shù)開發(fā)的游戲、界面變化較為復(fù)雜的程序等圖形應(yīng)用程序,都容易出現(xiàn)渲染速度慢的缺陷。
[0006]2、游戲客戶端的應(yīng)用。
[0007]現(xiàn)有技術(shù)的游戲客戶端是用C++或Java代碼開發(fā)游戲程序,且用GPU進(jìn)行圖形渲染的。但是,游戲客戶端程序需要在下載后安裝一遍,且更新麻煩。
[0008]總之,需要本領(lǐng)域技術(shù)人員迫切解決的一個(gè)技術(shù)問題就是:如何能夠提高移動(dòng)設(shè)備上圖形渲染的速度。
【發(fā)明內(nèi)容】
[0009]本申請所要解決的技術(shù)問題是提供一種在移動(dòng)設(shè)備上進(jìn)行圖形渲染的方法和裝置,能夠提高移動(dòng)設(shè)備上圖形渲染的速度。
[0010]為了解決上述問題,本申請公開了一種在移動(dòng)設(shè)備上進(jìn)行圖形渲染的方法,包括:
[0011]獲取圖形應(yīng)用程序的JavaScript代碼;所述JavaScript代碼中包括有基于OPENGL的渲染函數(shù)對應(yīng)的API接口,所述API接口的樣式遵循HTML5Canvas標(biāo)準(zhǔn);
[0012]在解析引擎中執(zhí)行所述JavaScript代碼;所述執(zhí)行過程包括:在執(zhí)行到所述JavaScript代碼中的API接口時(shí),使用所述解析引擎將所述API接口解析為相應(yīng)的基于OPENGL的渲染函數(shù);
[0013]調(diào)用解析得到的渲染函數(shù)對渲染目標(biāo)進(jìn)行圖形渲染。
[0014]優(yōu)選的,所述方法還包括:將基于OPENGL的渲染函數(shù)封裝為API接口的封裝步驟;
[0015]所述封裝步驟為,基于所述解析引擎的擴(kuò)展性,將基于OPENGL的渲染函數(shù)封裝為相應(yīng)的API接口,所述API接口暴露給JavaScript開發(fā)者,所述API接口的樣式遵循HTML5Canvas 標(biāo)準(zhǔn)。
[0016]優(yōu)選的,所述渲染函數(shù)為基于OPENGL格式的函數(shù)封裝得到的接口函數(shù);
[0017]則所述調(diào)用解析得到的渲染函數(shù)對渲染目標(biāo)進(jìn)行圖形渲染的步驟,進(jìn)一步包括:
[0018]將解析得到的渲染函數(shù)進(jìn)行二次解析,得到相應(yīng)的OPENGL格式的函數(shù);
[0019]調(diào)用解析得到的OPENGL格式的函數(shù)對渲染目標(biāo)進(jìn)行圖形渲染。
[0020]優(yōu)選的,所述渲染函數(shù)包括初始化渲染函數(shù),所述初始化渲染函數(shù)用于初始化底層的渲染環(huán)境。
[0021]優(yōu)選的,所述方法還包括:
[0022]依據(jù)當(dāng)前移動(dòng)設(shè)備的平臺特征,調(diào)用所述初始化渲染函數(shù),獲取相應(yīng)的渲染數(shù)據(jù),所述渲染數(shù)據(jù)具體可以包括設(shè)備硬件信息;
[0023]依據(jù)所述設(shè)備硬件信息評估當(dāng)前移動(dòng)設(shè)備的硬件能力;
[0024]根據(jù)當(dāng)前移動(dòng)設(shè)備的硬件能力進(jìn)行渲染流程優(yōu)化策略的調(diào)整;
[0025]則所述調(diào)用解析得到的渲染函數(shù)對渲染目標(biāo)進(jìn)行圖形渲染的步驟,進(jìn)一步包括:依據(jù)所述調(diào)整后的渲染流程優(yōu)化策略,調(diào)用解析得到的渲染函數(shù)對渲染目標(biāo)進(jìn)行圖形渲染。
[0026]根據(jù)本申請的另一實(shí)施例,還公開了一種在移動(dòng)設(shè)備上進(jìn)行圖形渲染的裝置,包括:
[0027]代碼獲取模塊,用于獲取圖形應(yīng)用程序的JavaScript代碼;所述JavaScript代碼中包括有基于OPENGL的渲染函數(shù)對應(yīng)的API接口,所述API接口的樣式遵循HTML5 Canvas標(biāo)準(zhǔn);
[0028]代碼執(zhí)行模塊,用于在解析引擎中執(zhí)行所述JavaScript代碼;所述執(zhí)行過程包括:在執(zhí)行到所述JavaScript代碼中的API接口時(shí),使用所述解析引擎將所述API接口解析為相應(yīng)的基于OPENGL的渲染函數(shù);及
[0029]函數(shù)調(diào)用模塊,用于調(diào)用解析得到的渲染函數(shù)對渲染目標(biāo)進(jìn)行圖形渲染。
[0030]優(yōu)選的,所述裝置還包括:用于將基于OPENGL的渲染函數(shù)封裝為API接口的封裝模塊;
[0031]則所述封裝模塊具體用于,基于所述解析引擎的擴(kuò)展性,將基于OPENGL的渲染函數(shù)封裝為相應(yīng)的API接口,所述API接口暴露給JavaScript開發(fā)者,所述API接口的樣式遵循HTML5 Canvas標(biāo)準(zhǔn)。
[0032]優(yōu)選的,所述渲染函數(shù)為基于OPENGL格式的函數(shù)封裝得到的接口函數(shù);
[0033]則所述函數(shù)調(diào)用模塊進(jìn)一步包括:
[0034]二次解析子模塊,用于將解析得到的渲染函數(shù)進(jìn)行二次解析,得到相應(yīng)的OPENGL格式的函數(shù);
[0035]調(diào)用子模塊,用于調(diào)用解析得到的OPENGL格式的函數(shù)對渲染目標(biāo)進(jìn)行圖形渲染。
[0036]優(yōu)選的,所述渲染函數(shù)包括初始化渲染函數(shù),所述初始化渲染函數(shù)用于初始化底層的渲染環(huán)境。[0037]優(yōu)選的,所述裝置還包括:
[0038]環(huán)境初始化模塊,用于依據(jù)當(dāng)前移動(dòng)設(shè)備的平臺特征,調(diào)用所述初始化渲染函數(shù),獲取相應(yīng)的渲染數(shù)據(jù),所述渲染數(shù)據(jù)包括設(shè)備硬件信息;
[0039]評估模塊,用于依據(jù)所述設(shè)備硬件信息評估當(dāng)前移動(dòng)設(shè)備的硬件能力;
[0040]渲染流程優(yōu)化策略調(diào)整模塊,用于根據(jù)當(dāng)前移動(dòng)設(shè)備的硬件能力進(jìn)行渲染流程優(yōu)化策略的調(diào)整;
[0041]則所述調(diào)用模塊,具體用于依據(jù)所述調(diào)整后的渲染流程優(yōu)化策略,調(diào)用解析得到的渲染函數(shù)對渲染目標(biāo)進(jìn)行圖形渲染。
[0042]與現(xiàn)有技術(shù)相比,本申請具有以下優(yōu)點(diǎn):
[0043]現(xiàn)有技術(shù)的瀏覽器基本全部支持了 HTML5 Canvas標(biāo)準(zhǔn)的API接口,但是由于其將HTML5 Canvas標(biāo)準(zhǔn)當(dāng)做瀏覽器中HTML節(jié)點(diǎn)控件來處理,其排版邏輯、事件、重繪等操作都需要用到HTML的節(jié)點(diǎn)樹,邏輯復(fù)雜,CPU需要處理的運(yùn)算很多,導(dǎo)致渲染速度慢。
[0044]本申請實(shí)施例也實(shí)現(xiàn)了 HTML5中HTML5 Canvas標(biāo)準(zhǔn)的API接口,但是,本申請基于解析引擎針對所述API接口解析得到相應(yīng)的基于OPENGL的渲染函數(shù),直接調(diào)用渲染函數(shù)對渲染目標(biāo)進(jìn)行渲染操作,能夠避免排版邏輯、事件、重繪等很多不必要的運(yùn)算,提高渲染速度;
[0045]并且,本申請?jiān)趯︿秩灸繕?biāo)進(jìn)行圖形渲染的過程中,調(diào)用了基于OPENGL的渲染函數(shù),基于OPENGL的渲染函數(shù)能夠在移動(dòng)設(shè)備上充分利用GPU渲染圖形界面,更合理地利用顯卡來渲染;故本申請能夠在較好的瀏覽器和操作系統(tǒng)兼容性的前提下,進(jìn)一步提高移動(dòng)設(shè)備上圖形渲染的性能。
[0046]另外,HTML5開發(fā)本身是開發(fā)人員熟悉的,HTML5 CanvasAPI也是網(wǎng)頁游戲開發(fā)人員熟知的技術(shù);對于開發(fā)人員而言,使用熟知的API技術(shù)進(jìn)行圖形應(yīng)用程序的開發(fā),本身沒有學(xué)習(xí)成本;故相對于現(xiàn)有技術(shù)中WebGL技術(shù)較高的學(xué)習(xí)成本,本申請能夠降低圖形應(yīng)用程序的學(xué)習(xí)成本,實(shí)現(xiàn)圖形應(yīng)用程序的高效開發(fā)。
[0047]進(jìn)一步,現(xiàn)有技術(shù)的游戲客戶端是用C++或Java代碼開發(fā)游戲等圖形應(yīng)用程序,且用GPU進(jìn)行圖形渲染的。但是,由于C++或Java代碼為編譯后的機(jī)器碼,需要安裝后執(zhí)行,故現(xiàn)有技術(shù)的游戲程序需要在下載后安裝一遍,且更新麻煩;而本申請采用的JavaScript代碼為直接下載的代碼,可以一邊解析一邊執(zhí)行,故JavaScript代碼具有C++和java代碼沒有的優(yōu)勢,那就是無需安裝,隨時(shí)可以更新,并且可以運(yùn)營,因此,相對于現(xiàn)有技術(shù),本申請開發(fā)的圖形應(yīng)用程序無須安裝,且更新簡單,運(yùn)營方便。
【專利附圖】
【附圖說明】
[0048]圖1是本申請一種在移動(dòng)設(shè)備上進(jìn)行圖形渲染的方法實(shí)施例的流程圖;
[0049]圖2是本申請一種在移動(dòng)設(shè)備上的瀏覽器中進(jìn)行圖形渲染的方法流程示意圖;
[0050]圖3是本申請一種在移動(dòng)設(shè)備上運(yùn)行游戲程序的方法流程示意圖;
[0051]圖4是本申請一種在移動(dòng)設(shè)備上進(jìn)行圖形渲染的裝置實(shí)施例的結(jié)構(gòu)圖。【具體實(shí)施方式】
[0052]為使本申請的上述目的、特征和優(yōu)點(diǎn)能夠更加明顯易懂,下面結(jié)合附圖和【具體實(shí)施方式】對本申請作進(jìn)一步詳細(xì)的說明。[0053]本申請?jiān)贘avaScript代碼中設(shè)計(jì)API接口,并在執(zhí)行到JavaScript代碼中的API接口時(shí),調(diào)用底層的基于OPENGL的渲染函數(shù)對渲染目標(biāo)進(jìn)行圖形渲染;由于本申請能夠在避免現(xiàn)有技術(shù)中將HTML5 Canvas標(biāo)準(zhǔn)當(dāng)做瀏覽器中HTML節(jié)點(diǎn)控件來處理等復(fù)雜邏輯運(yùn)算的情況下,直接對渲染目標(biāo)進(jìn)行渲染操作,因而能夠避免很多不必要的運(yùn)算,提高渲染速度。
[0054]另外,本申請?jiān)趯︿秩灸繕?biāo)進(jìn)行圖形渲染時(shí),調(diào)用了基于OPENGL的渲染函數(shù),基于OPENGL的渲染函數(shù)能夠在移動(dòng)設(shè)備上充分利用GPU渲染圖形界面,更合理地利用顯卡來渲染;故本申請能夠在較好的瀏覽器和操作系統(tǒng)兼容性的前提下,進(jìn)一步提高移動(dòng)設(shè)備上圖形渲染的性能。
[0055]參照表1,示出了本申請實(shí)施例中一些技術(shù)術(shù)語的解釋。
[0056]表I
[0057]
【權(quán)利要求】
1.一種在移動(dòng)設(shè)備上進(jìn)行圖形渲染的方法,其特征在于,包括: 獲取圖形應(yīng)用程序的JavaScript代碼;所述JavaScript代碼中包括有基于OPENGL的渲染函數(shù)對應(yīng)的API接口,所述API接口的樣式遵循HTML5Canvas標(biāo)準(zhǔn); 在解析引擎中執(zhí)行所述JavaScript代碼;所述執(zhí)行過程包括:在執(zhí)行到所述JavaScript代碼中的API接口時(shí),使用所述解析引擎將所述API接口解析為相應(yīng)的基于OPENGL的渲染函數(shù); 調(diào)用解析得到的渲染函數(shù)對渲染目標(biāo)進(jìn)行圖形渲染。
2.如權(quán)利要求1所述的方法,其特征在于,還包括:將基于OPENGL的渲染函數(shù)封裝為API接口的封裝步驟; 所述封裝步驟為,基于所述解析引擎的擴(kuò)展性,將基于OPENGL的渲染函數(shù)封裝為相應(yīng)的API接口,所述API接口暴露給JavaScript開發(fā)者,所述API接口的樣式遵循HTML5Canvas 標(biāo)準(zhǔn)。
3.如權(quán)利要求1所述的方法,其特征在于,所述渲染函數(shù)為基于OPENGL格式的函數(shù)封裝得到的接口函數(shù); 則所述調(diào)用解析得到的渲染函數(shù)對渲染目標(biāo)進(jìn)行圖形渲染的步驟,進(jìn)一步包括: 將解析得到的渲染函數(shù)進(jìn)行二次解析,得到相應(yīng)的OPENGL格式的函數(shù); 調(diào)用解析得到的OPENGL格式的函數(shù)對渲染目標(biāo)進(jìn)行圖形渲染。
4.如權(quán)利要求1所述的方法,其特征在于,所述渲染函數(shù)包括初始化渲染函數(shù),所述初始化渲染函數(shù)用于初始化底層的渲染環(huán)境。`
5.如權(quán)利要求4所述的方法,其特征在于,還包括: 依據(jù)當(dāng)前移動(dòng)設(shè)備的平臺特征,調(diào)用所述初始化渲染函數(shù),獲取相應(yīng)的渲染數(shù)據(jù),所述渲染數(shù)據(jù)具體可以包括設(shè)備硬件信息; 依據(jù)所述設(shè)備硬件信息評估當(dāng)前移動(dòng)設(shè)備的硬件能力; 根據(jù)當(dāng)前移動(dòng)設(shè)備的硬件能力進(jìn)行渲染流程優(yōu)化策略的調(diào)整; 則所述調(diào)用解析得到的渲染函數(shù)對渲染目標(biāo)進(jìn)行圖形渲染的步驟,進(jìn)一步包括:依據(jù)所述調(diào)整后的渲染流程優(yōu)化策略,調(diào)用解析得到的渲染函數(shù)對渲染目標(biāo)進(jìn)行圖形渲染。
6.一種在移動(dòng)設(shè)備上進(jìn)行圖形渲染的裝置,其特征在于,包括: 代碼獲取模塊,用于獲取圖形應(yīng)用程序的JavaScript代碼;所述JavaScript代碼中包括有基于OPENGL的渲染函數(shù)對應(yīng)的API接口,所述API接口的樣式遵循HTML5 Canvas標(biāo)準(zhǔn); 代碼執(zhí)行模塊,用于在解析引擎中執(zhí)行所述JavaScript代碼;所述執(zhí)行過程包括:在執(zhí)行到所述JavaScript代碼中的API接口時(shí),使用所述解析引擎將所述API接口解析為相應(yīng)的基于OPENGL的渲染函數(shù);及 函數(shù)調(diào)用模塊,用于調(diào)用解析得到的渲染函數(shù)對渲染目標(biāo)進(jìn)行圖形渲染。
7.如權(quán)利要求6所述的裝置,其特征在于,還包括:用于將基于OPENGL的渲染函數(shù)封裝為API接口的封裝模塊; 所述封裝模塊具體用于,基于所述解析引擎的擴(kuò)展性,將基于OPENGL的渲染函數(shù)封裝為相應(yīng)的API接口,所述API接口暴露給JavaScript開發(fā)者,所述API接口的樣式遵循HTML5Canvas 標(biāo)準(zhǔn)。
8.如權(quán)利要求6所述的裝置,其特征在于,所述渲染函數(shù)為基于OPENGL格式的函數(shù)封裝得到的接口函數(shù); 則所述函數(shù)調(diào)用模塊進(jìn)一步包括: 二次解析子模塊,用于將解析得到的渲染函數(shù)進(jìn)行二次解析,得到相應(yīng)的OPENGL格式的函數(shù); 調(diào)用子模塊,用于調(diào)用解析得到的OPENGL格式的函數(shù)對渲染目標(biāo)進(jìn)行圖形渲染。
9.如權(quán)利要求6所述的裝置,其特征在于,所述渲染函數(shù)包括初始化渲染函數(shù),所述初始化渲染函數(shù)用于初始化底層的渲染環(huán)境。
10.如權(quán)利要求9所述的裝置,其特征在于,還包括: 環(huán)境初始化模塊,用于依據(jù)當(dāng)前移動(dòng)設(shè)備的平臺特征,調(diào)用所述初始化渲染函數(shù),獲取相應(yīng)的渲染數(shù)據(jù),所述渲染數(shù)據(jù)包括設(shè)備硬件信息; 評估模塊,用于依據(jù)所述設(shè)備硬件信息評估當(dāng)前移動(dòng)設(shè)備的硬件能力; 渲染流程優(yōu)化策略調(diào)整模塊,用于根據(jù)當(dāng)前移動(dòng)設(shè)備的硬件能力進(jìn)行渲染流程優(yōu)化策略的調(diào)整; 則所述調(diào)用模塊,具體用于依據(jù)所述調(diào)整后的渲染流程優(yōu)化策略,調(diào)用解析得到的渲染函數(shù)對渲染目標(biāo)進(jìn)行圖形 渲染。
【文檔編號】G06F9/44GK103713891SQ201210379921
【公開日】2014年4月9日 申請日期:2012年10月9日 優(yōu)先權(quán)日:2012年10月9日
【發(fā)明者】劉胡笳, 陶俊杰, 朱文祥, 王明建 申請人:阿里巴巴集團(tuán)控股有限公司