網(wǎng)頁(yè)繪制方法及裝置的制造方法
【技術(shù)領(lǐng)域】
[0001]本發(fā)明涉及瀏覽器技術(shù)領(lǐng)域,特別是涉及一種網(wǎng)頁(yè)繪制方法及裝置。
【背景技術(shù)】
[0002]現(xiàn)有的瀏覽器技術(shù)中,例如谷歌公司的chrome瀏覽器,對(duì)于網(wǎng)頁(yè)(特別是HTML5定義的網(wǎng)頁(yè))中的3D元素通常采用硬件加速技術(shù)來(lái)繪制。其先將網(wǎng)頁(yè)中的腳本指令和網(wǎng)頁(yè)標(biāo)簽轉(zhuǎn)換成OpenGL指令,再將OpenGL指令轉(zhuǎn)換成系統(tǒng)圖形引擎指令(例如在windows操作系統(tǒng)中為DirectX指令),然后才由操作系統(tǒng)的圖形渲染組件完成對(duì)網(wǎng)頁(yè)的繪制。這種方式就使得在網(wǎng)頁(yè)繪制中需要經(jīng)過(guò)多次指令轉(zhuǎn)換,從而執(zhí)行效率不高。
【發(fā)明內(nèi)容】
[0003]基于此,有必要提供一種能提高執(zhí)行效率的網(wǎng)頁(yè)繪制方法。
[0004]一種網(wǎng)頁(yè)繪制方法,包括:
[0005]獲取網(wǎng)頁(yè)中渲染模式為硬件渲染模式的網(wǎng)頁(yè)元素,獲取所述網(wǎng)頁(yè)元素中包含的腳本指令和標(biāo)簽彳目息;
[0006]獲取操作系統(tǒng)版本信息,將所述腳本指令和標(biāo)簽信息轉(zhuǎn)換成與所述操作系統(tǒng)版本信息對(duì)應(yīng)的系統(tǒng)圖形引擎指令;
[0007]創(chuàng)建圖形處理器進(jìn)程,通過(guò)所述圖形處理器進(jìn)程執(zhí)行所述系統(tǒng)圖形引擎指令,生成相應(yīng)的渲染數(shù)據(jù);
[0008]通過(guò)瀏覽器進(jìn)程加載所述生成的渲染數(shù)據(jù)并展示。
[0009]此外,還有必要提供一種能提高執(zhí)行效率的網(wǎng)頁(yè)繪制裝置。
[0010]一種網(wǎng)頁(yè)繪制裝置,包括:
[0011]腳本提取模塊,用于獲取網(wǎng)頁(yè)中渲染模式為硬件渲染模式的網(wǎng)頁(yè)元素,獲取所述網(wǎng)頁(yè)元素中包含的腳本指令和標(biāo)簽信息;
[0012]指令轉(zhuǎn)換模塊,用于獲取操作系統(tǒng)版本信息,將所述腳本指令和標(biāo)簽信息轉(zhuǎn)換成與所述操作系統(tǒng)版本信息對(duì)應(yīng)的系統(tǒng)圖形引擎指令;
[0013]指令執(zhí)行模塊,用于創(chuàng)建圖形處理器進(jìn)程,通過(guò)所述圖形處理器進(jìn)程執(zhí)行所述系統(tǒng)圖形引擎指令,生成相應(yīng)的渲染數(shù)據(jù);
[0014]渲染數(shù)據(jù)加載模塊,用于通過(guò)瀏覽器進(jìn)程加載所述生成的渲染數(shù)據(jù)并展示。
[0015]此外,還有必要提供一種能提高執(zhí)行效率的基于3D引擎的圖形渲染數(shù)據(jù)生成方法。
[0016]一種基于3D引擎的圖形渲染數(shù)據(jù)生成方法,包括:
[0017]獲取輸入的腳本指令和/或標(biāo)簽信息;
[0018]獲取操作系統(tǒng)版本信息,將所述腳本指令和/或標(biāo)簽信息轉(zhuǎn)換成與所述操作系統(tǒng)版本信息對(duì)應(yīng)的系統(tǒng)圖形引擎指令;
[0019]創(chuàng)建圖形處理器進(jìn)程,通過(guò)所述圖形處理器進(jìn)程執(zhí)行所述系統(tǒng)圖形引擎指令,生成相應(yīng)的渲染數(shù)據(jù)并存儲(chǔ)在顯存中;
[0020]生成顯存中渲染數(shù)據(jù)準(zhǔn)備就緒的通知指令。
[0021]此外,還有必要提供一種能提高執(zhí)行效率的基于3D引擎的圖形渲染數(shù)據(jù)生成裝置。
[0022]一種基于3D引擎的圖形渲染數(shù)據(jù)生成裝置,包括:
[0023]指令獲取模塊,用于獲取輸入的腳本指令和/或標(biāo)簽信息;
[0024]圖形引擎選擇模塊,用于獲取操作系統(tǒng)版本信息,將所述腳本指令和/或標(biāo)簽信息轉(zhuǎn)換成與所述操作系統(tǒng)版本信息對(duì)應(yīng)的系統(tǒng)圖形引擎指令;
[0025]渲染數(shù)據(jù)生成模塊,用于創(chuàng)建圖形處理器進(jìn)程,通過(guò)所述圖形處理器進(jìn)程執(zhí)行所述系統(tǒng)圖形引擎指令,生成相應(yīng)的渲染數(shù)據(jù)并存儲(chǔ)在顯存中;
[0026]通知模塊,用于生成顯存中渲染數(shù)據(jù)準(zhǔn)備就緒的通知指令。
[0027]上述網(wǎng)頁(yè)繪制方法及裝置、基于3D引擎的圖形渲染數(shù)據(jù)生成方法及裝置中,無(wú)需先將網(wǎng)頁(yè)中的腳本指令和網(wǎng)頁(yè)標(biāo)簽先轉(zhuǎn)換成同一標(biāo)準(zhǔn)的OpenGL指令,再由OpenGL指令轉(zhuǎn)化成底層的系統(tǒng)圖形引擎指令,而是通過(guò)獲取操作系統(tǒng)版本信息直接將網(wǎng)頁(yè)中的腳本指令和網(wǎng)頁(yè)標(biāo)簽轉(zhuǎn)換成底層的系統(tǒng)圖形引擎指令。使得網(wǎng)頁(yè)中的渲染模式為硬件加速模式的網(wǎng)頁(yè)元素中的腳本指令和網(wǎng)頁(yè)標(biāo)簽?zāi)軌蚩焖俚剞D(zhuǎn)換成底層的系統(tǒng)圖形引擎指令,從而提高了執(zhí)行效率。
【附圖說(shuō)明】
[0028]圖1為一個(gè)實(shí)施例中網(wǎng)頁(yè)繪制方法的流程圖;
[0029]圖2為一個(gè)應(yīng)用場(chǎng)景中⑶I方式繪制和硬件加速方式繪制網(wǎng)頁(yè)元素的過(guò)程對(duì)比圖;
[0030]圖3為一個(gè)實(shí)施例中多個(gè)管理器對(duì)象分別轉(zhuǎn)換腳本指令和網(wǎng)頁(yè)標(biāo)簽的示意圖;
[0031]圖4為一個(gè)應(yīng)用場(chǎng)景中,判斷是否啟用硬件加速的過(guò)程示意圖;
[0032]圖5為一個(gè)實(shí)施例中網(wǎng)頁(yè)繪制的過(guò)程示意圖;
[0033]圖6為一個(gè)實(shí)施例中網(wǎng)頁(yè)繪制裝置的結(jié)構(gòu)示意圖;
[0034]圖7為一個(gè)實(shí)施例中基于3D引擎的圖形渲染數(shù)據(jù)生成方法的流程圖;
[0035]圖8為一個(gè)實(shí)施例中基于3D引擎的圖形渲染數(shù)據(jù)生成裝置的結(jié)構(gòu)示意圖。
【具體實(shí)施方式】
[0036]在一個(gè)實(shí)施例中,如圖1所示,一種網(wǎng)頁(yè)繪制方法,該方法的運(yùn)行可依賴于瀏覽器程序,該瀏覽器程序可運(yùn)行于基于馮諾依曼體系的計(jì)算機(jī)系統(tǒng)之上。該計(jì)算機(jī)系統(tǒng)可以是具備圖形處理器(GPU, Graphic Process Unit)的個(gè)人電腦、筆記本電腦、平板電腦以及智能手機(jī)等。
[0037]該方法包括:
[0038]步驟S102,獲取網(wǎng)頁(yè)中渲染模式為硬件渲染模式的網(wǎng)頁(yè)元素,獲取網(wǎng)頁(yè)元素中包含的腳本指令和標(biāo)簽信息。
[0039]渲染模式可分為軟繪制模式(Software Render)和硬件渲染模式。軟繪制模式即以圖形設(shè)備接口(⑶I,Graphic Device Interface)的方式繪制網(wǎng)頁(yè)元素。硬件渲染模式即為通過(guò)系統(tǒng)圖形引擎指令來(lái)控制顯卡設(shè)備繪制網(wǎng)頁(yè)。
[0040]腳本指令可以是網(wǎng)頁(yè)中的javascript腳本語(yǔ)言定義的指令。標(biāo)簽信息可以是符合HTML5標(biāo)準(zhǔn)的網(wǎng)頁(yè)標(biāo)簽。
[0041]在本實(shí)施例中,可遍歷網(wǎng)頁(yè)中的網(wǎng)頁(yè)元素,判斷網(wǎng)頁(yè)元素是否為WebGL標(biāo)簽定義的網(wǎng)頁(yè)元素,若是,則該網(wǎng)頁(yè)元素即為渲染模式為硬件渲染模式的網(wǎng)頁(yè)元素。
[0042]WebGL為一種3D繪圖標(biāo)準(zhǔn)。Web開(kāi)發(fā)人員可通過(guò)在HTML5中添加WebGL標(biāo)簽來(lái)定義需要以硬件加速方式渲染的網(wǎng)頁(yè)元素,該部分網(wǎng)頁(yè)元素在被瀏覽器渲染時(shí),即可借助系統(tǒng)顯卡來(lái)在瀏覽器里更流暢地展示3D場(chǎng)景和模型了,還能創(chuàng)建復(fù)雜的導(dǎo)航和數(shù)據(jù)視覺(jué)化。
[0043]也就是說(shuō),在繪制符合HTML5標(biāo)準(zhǔn)的網(wǎng)頁(yè)的應(yīng)用場(chǎng)景中,可獲取網(wǎng)頁(yè)中以WebGL標(biāo)簽定義的網(wǎng)頁(yè)元素,并獲取其中包含的腳本指令和網(wǎng)頁(yè)標(biāo)簽。
[0044]在本實(shí)施例中,對(duì)于渲染模式不為硬件渲染模式的網(wǎng)頁(yè)元素,例如網(wǎng)頁(yè)中的文字內(nèi)容,即可通過(guò)前述的圖形設(shè)備接口的方式進(jìn)行渲染。
[0045]步驟S104,獲取操作系統(tǒng)版本信息,將腳本指令和標(biāo)簽信息轉(zhuǎn)換成與操作系統(tǒng)版本信息對(duì)應(yīng)的系統(tǒng)圖形引擎指令。
[0046]操作系統(tǒng)版本信息包含了操作系統(tǒng)的類型和版本號(hào)信息,對(duì)于具有跨平臺(tái)特性的瀏覽器可獲取到安裝該瀏覽器的操作系統(tǒng)的類型和版本號(hào)。例如,操作系統(tǒng)可以是window、Iinux或OS X,相應(yīng)的windows的版本號(hào)可以是xp, 2003, window7、windows8等。系統(tǒng)圖形引擎指令即為與操作系統(tǒng)適配的符合OpenGL標(biāo)準(zhǔn)的圖形渲染指令。例如,對(duì)于windowsxp系統(tǒng),系統(tǒng)圖形引擎指令可以是DirectX9.0系列的指令,對(duì)于windows8系統(tǒng),系統(tǒng)圖形引擎指令可以是DirectXll.0系列的指令,對(duì)于Iinux系統(tǒng),貝U可以是OpenGL指令。系統(tǒng)圖形引擎指令也可以不是操作系統(tǒng)自帶的圖形引擎指令,而是第三方開(kāi)源組織為某個(gè)操作系統(tǒng)編寫(xiě)的第三方圖形引擎指令。
[0047]步驟S106,創(chuàng)建圖