• <tr id="yyy80"></tr>
  • <sup id="yyy80"></sup>
  • <tfoot id="yyy80"><noscript id="yyy80"></noscript></tfoot>
  • 99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看 ?

    基于WebGL的Canvas元素2D繪制加速

    2016-02-13 05:58:22謝賢博鄧紅艷
    軟件 2016年12期
    關(guān)鍵詞:著色器瀏覽器頂點(diǎn)

    謝賢博,聶 蕓,鄧紅艷,張 宇

    (華北計(jì)算技術(shù)研究所 地理信息與圖形圖像技術(shù)研發(fā)中心,北京 郵編 100083)

    基于WebGL的Canvas元素2D繪制加速

    謝賢博,聶 蕓,鄧紅艷,張 宇

    (華北計(jì)算技術(shù)研究所 地理信息與圖形圖像技術(shù)研發(fā)中心,北京 郵編 100083)

    HTML5中的Canvas元素極大地豐富了網(wǎng)頁所能呈現(xiàn)的圖像信息。Canvas元素具有兩種繪圖模式:Canvas2D接口類似于畫布,用于渲染2D內(nèi)容,使用簡單,可由瀏覽器負(fù)責(zé)硬件加速;WebGL接口類似于OpenGL-ES,負(fù)責(zé)渲染3d場(chǎng)景,使用復(fù)雜,但可以直接使用硬件。當(dāng)繪制的2D基本圖元數(shù)量較多時(shí),實(shí)時(shí)性要求高時(shí),Canvas2D接口性能不足。本文將以WebGL為基礎(chǔ),提出一種優(yōu)化思想,通過緩沖技術(shù)、常量屬性化技術(shù)、幀間緩存技術(shù)、DMA技術(shù),加速不同2D基本圖元的繪制。本文對(duì)不同的2D圖元繪制方式性能進(jìn)行對(duì)比實(shí)驗(yàn),證實(shí)以WebGL加速Canvas的2D繪制是可行并且有效的,并且給出一個(gè)實(shí)際應(yīng)用實(shí)例。

    計(jì)算機(jī)圖形學(xué);WebGL繪制;設(shè)計(jì)與實(shí)現(xiàn);高性能渲染;HTML5

    0 引言

    隨著HTML5的普及,網(wǎng)頁可以承載更多以往桌面或移動(dòng)客戶端的內(nèi)容。Canvas是HTML5引入的新畫布元素,開發(fā)者可以用JavaScript腳本在該元素上繪制任意圖形。Canvas本身不具備畫圖屬性,而是通過獲取Canvas中的繪制上下文(Rendering Context),利用繪制上下文實(shí)現(xiàn)繪制。目前有兩種繪制上下文:Canvas2D是用于繪制2D圖形的API,包括基本圖形繪制、文字繪制、圖形變換、圖片繪制和合成等;而WebGL是目前用于繪制3d圖形的API,擁有一套簡化的OpenGL-ES的功能,可以操作硬件,也可以使用封裝好的圖形庫簡化開發(fā)[1,2]。

    目前瀏覽器上的主流的基于Canvas的2D引擎,盡管封裝各不相同,都是用Canvas2D進(jìn)行底層渲染;而主流3D引擎繪制2D畫面的性能并不比2D引擎好。當(dāng)需要繪制的物體過多,或者要求實(shí)時(shí)互動(dòng)性強(qiáng)時(shí),主流方法的渲染性能不足以滿足。但是在桌面應(yīng)用方面,使用3D加速2D繪制是很常見的方法。本文將探討瀏覽器端使用WebGL加速2D繪制所遇到的和桌面端不同的問題,給出WebGL加速的具體原理和方法,通過實(shí)驗(yàn)驗(yàn)證WebGL繪制幾種2D圖形的性能,并分析具體的WebGL繪制方案。

    1 加速原理

    1.1 Canvas2D繪制原理

    作為傳統(tǒng)的2D繪制接口,Canvas2D提供了豐富的功能用以繪制2D對(duì)象。其中有一套以beginPath開始,以closePath結(jié)束的,基于過程的繪制接口,也有如drawImage等實(shí)時(shí)繪制接口,并且維持一個(gè)2D變換矩陣和一組繪制模式,應(yīng)用在當(dāng)前繪制的圖形上。Canvas2D的優(yōu)勢(shì)在于使用簡單,開發(fā)成本低,而缺點(diǎn)在于繪制方式固定,無法充分利用現(xiàn)代圖形硬件。Canvas2D提供的繪制方式是以像素為基礎(chǔ)的,并且也支持瀏覽器進(jìn)行硬件加速。

    1.2 WebGL繪制原理

    WebGL接口的基本功能由著色器(Shader)[3]、輸入、繪制指令、狀態(tài)指令四部分組成。

    為了完成一次基本繪制,首先需要初始化著色器,包括編譯著色器,得到著色器內(nèi)各個(gè)輸入的地址等。著色器是將要運(yùn)行在GPU上的小程序,分為頂點(diǎn)著色器(Vertex Shader)和片段著色器(Fragment Shader),頂點(diǎn)著色器負(fù)責(zé)將輸入的頂點(diǎn)信息轉(zhuǎn)化為頂點(diǎn)在屏幕上的位置,并且可以計(jì)算一些頂點(diǎn)的屬性。光柵化操作依據(jù)繪制的圖元,將屏幕上的頂點(diǎn)數(shù)組填充成三角形等區(qū)域,同時(shí)可以考慮遮擋關(guān)系,并且自動(dòng)對(duì)三角形的頂點(diǎn)信息插值,將得到的像素則交給片段著色器。片段著色器依據(jù)得到像素的各個(gè)屬性,計(jì)算像素最終的顏色。

    之后,需要輸入數(shù)據(jù)。著色器有兩種輸入,一種是頂點(diǎn)屬性(Vertex Attribute),一種是常量(uniform)。頂點(diǎn)屬性是依據(jù)需要繪制對(duì)象頂點(diǎn)數(shù)量而定的WebGL接口的基本功能由著色器(Shader)、輸入、繪制指令、狀態(tài)指令四部分組成。數(shù)組,一個(gè)頂點(diǎn)可以包含多個(gè)頂點(diǎn)屬性,常常包括位置、顏色、紋理信息等。常量是和頂點(diǎn)無關(guān)的量,常常包括環(huán)境光、投影矩陣、變換矩陣等。對(duì)于不同的物體,常量可能不同。

    然后需要設(shè)置狀態(tài)。狀態(tài)包括是否啟用深度檢測(cè)、是否啟用混合、混合的類型等。

    最后使用繪制指令,繪制指定數(shù)量的某種圖元。

    1.3 WebGL繪制特點(diǎn)

    WebGL[4]是一套可以使用硬件的繪制接口,但是和傳統(tǒng)的桌面OpenGL[5]相比,WebGL經(jīng)過多次簡化,刪減了專用的3D投影、光照等內(nèi)置功能,使其更容易被支持[6]。WebGL的優(yōu)勢(shì)是繪制靈活,著色器程序的性能高,可以繪制大量復(fù)雜的對(duì)象,可以使用更多的優(yōu)化策略,而劣勢(shì)是使用復(fù)雜,API調(diào)用開銷大。

    其中API調(diào)用的開銷經(jīng)常被程序員忽視。調(diào)用WebGL的API時(shí),比如clearColor(0,0,0,1),其內(nèi)容要被瀏覽器驗(yàn)證有效,并最終將被確實(shí)寫入GPU,并且GPU確認(rèn)后才能返回,并執(zhí)行下一條指令。而Canvas2D的API則不同。與之前類似的fillStyle則直接是一個(gè)變量,甚至不需要進(jìn)入CPU層。而一些繪制控制API比如beginPath、moveTo等,則只用傳遞給CPU層瀏覽器的繪制引擎,就可以返回。只有切實(shí)繪制內(nèi)容的API調(diào)用會(huì)導(dǎo)致GPU訪問。這種缺點(diǎn)使得通過WebGL直接實(shí)現(xiàn)Canvas2D的API而加速并不可行,這種方法只適用于在WebGL中兼容Canvas2D的一些繪制方式。

    因此WebGL提升性能的重要途徑之一就是減少API調(diào)用,可以使用緩沖技術(shù)和常量屬性化技術(shù)。

    1.3.1 緩沖技術(shù)

    緩沖技術(shù)(Batch)[7]是指在繪制時(shí),利用腳本將不同的繪制對(duì)象的繪制信息合并在一個(gè)緩沖器中,最終調(diào)用一次WebGL繪制指令,一次性將緩沖器的內(nèi)容繪制出來。緩沖技術(shù)依賴于WebGL的繪制功能,必須同一類物體才能緩沖在一起繪制。常量屬性化技術(shù)可以增加緩沖技術(shù)的適用范圍。

    1.3.2 常量屬性化技術(shù)

    常量屬性化技術(shù)是指在設(shè)計(jì)著色器時(shí),將uniform常量轉(zhuǎn)換為attribute頂點(diǎn)屬性,增加內(nèi)存開銷和頂點(diǎn)渲染器的運(yùn)算量以減少或消除常量變化的技術(shù)。比如將全局屬性的顏色,拷貝進(jìn)頂點(diǎn)屬性數(shù)組中,在著色器里使用頂點(diǎn)屬性來訪問全局顏色,這樣就可以將不同全局顏色下繪制的對(duì)象緩沖在一起繪制。

    1.3.3 幀間緩存技術(shù)

    幀間緩存技術(shù)是將一次性的緩沖變?yōu)榫彺鎯?chǔ)存起來,供多幀渲染的技術(shù)。當(dāng)每幀之間繪制的物體基本不變時(shí),幀間緩存技術(shù)可以大大加快每幀進(jìn)行對(duì)象繪制信息緩沖的速度??梢詫?duì)采用緩沖技術(shù)的一組物體進(jìn)行緩存,但是當(dāng)物體屬性發(fā)生變化,或者物體的數(shù)量發(fā)生改變時(shí),維護(hù)緩存將很復(fù)雜。所以幀間緩存一般用于擁有復(fù)雜渲染單元的單個(gè)物體。

    1.4 WebGL-DMA

    WebGL-DMA(以下簡稱WDMA)是為了加速零碎對(duì)象WebGL繪制而設(shè)計(jì)的繪制接口,主要解決了采用幀間緩存技術(shù)時(shí),物體與緩存的對(duì)接和緩存數(shù)據(jù)的維護(hù)問題。WDMA由WebGL緩沖、屬性緩存、物體緩沖和物體解釋器和繪制器組成。

    WDMA參考特定的Shader,得到Shader中的所有頂點(diǎn)屬性輸入,參考默認(rèn)的更新頻率、頂點(diǎn)屬性位置,建立內(nèi)部的WebGL緩沖和屬性緩存。

    WDMA緩沖分為WebGL緩沖和屬性緩存,其中屬性緩存中每個(gè)屬性數(shù)組為Float32Array類型,并且大小指定,將在每次繪制之間維持,即對(duì)應(yīng)一片內(nèi)存空間。當(dāng)實(shí)際物體數(shù)量將要超過當(dāng)前的容量時(shí),屬性緩存會(huì)對(duì)每個(gè)數(shù)組申請(qǐng)一片更大的空間并復(fù)制;WebGL緩沖則存儲(chǔ)了每個(gè)屬性對(duì)應(yīng)的glBuffer。按照屬性更新頻率的不同,活躍屬性的glBuffer由WDMA在每幀繪制時(shí)載入屬性緩存中的全部數(shù)據(jù),而不活躍的屬性則由物體解釋器負(fù)責(zé)更新WebGL緩沖和屬性緩存。不活躍屬性的屬性緩存僅僅是為了在擴(kuò)大容量時(shí)復(fù)原glBuffer。

    WDMA物體解釋器是由特定的物體對(duì)象格式和Shader定義的,可以將某個(gè)類型物體信息更新至WDMA緩沖中的函數(shù),也就是完成直接內(nèi)存操作。因?yàn)閃ebGL某些繪制使用的頂點(diǎn)屬性,并不需要被其他腳本使用,如果由物體自身的腳本計(jì)算,不僅計(jì)算量大,數(shù)據(jù)零碎而且有重復(fù),每一幀還需要拷貝進(jìn)頂點(diǎn)數(shù)組。物體解釋器則可以直接把運(yùn)算結(jié)果存儲(chǔ)入WDMA緩沖中的指定位置,并且決定是否更新。同時(shí),解釋器還負(fù)責(zé)更新物體緩沖,決定需要繪制的對(duì)象。

    WDMA物體緩沖存儲(chǔ)了當(dāng)前幀WDMA緩沖中的物體映射狀態(tài)。每個(gè)對(duì)象在其第一次加入WDMA時(shí),會(huì)獲得一個(gè)當(dāng)前空閑的索引號(hào),并且一直維持到物體被標(biāo)記為銷毀,同時(shí)物體被存入相應(yīng)的物體數(shù)組,而索引號(hào)被添加到物體上。每一幀當(dāng)物體調(diào)用物體解釋器時(shí),物體解釋器將索引號(hào)解釋成繪制命令存入物體緩沖。

    WDMA繪制器則使用drawElements函數(shù)將物體緩沖中的內(nèi)容繪制出來。使用drawElements與drawArrays相比,可以降低維護(hù)屬性緩存的開銷,并且維持繪制順序穩(wěn)定性。

    使用WDMA的限制是所有Uniform變量必須一致。為此在設(shè)計(jì)系統(tǒng)時(shí),要使用常量屬性化技術(shù),然后按照其他輸入(比如紋理)聚類,建立多個(gè)WDMA,繪制時(shí)依次設(shè)置Uniform變量繪制所有的WDMA。

    圖1 一個(gè)渲染Sprite對(duì)象的WebGL-DMA結(jié)構(gòu)Fig.1 Structure of a sprite WebGL-DMA renderer

    2 2D貼圖繪制加速

    2D貼圖(sprite)繪制是指將圖片的矩形區(qū)域畫至畫面中的指定矩形區(qū)域,是2D游戲繪制引擎最重要的一個(gè)部分。在Canvas2D中,2D貼圖使用drawImage實(shí)現(xiàn),其完整輸入包括圖片、源矩形、目標(biāo)矩形,并且應(yīng)用transform控制以實(shí)現(xiàn)平移和旋轉(zhuǎn)等效果。這種繪制模式比較符合OpenGL類的繪制,因此在瀏覽器優(yōu)化下,實(shí)際性能也相當(dāng)出色。在典型的Canvas2D渲染系統(tǒng)中,腳本將針對(duì)每一個(gè)貼圖,操作transform矩陣,然后執(zhí)行drawImage指令,這樣API調(diào)用的次數(shù)與貼圖數(shù)量成正比。這種渲染方式不適用于WebGL。

    2.1 基于WebGL-DMA的2D貼圖繪制

    為了解決WebGL繪制2D貼圖的瓶頸,本文依據(jù)2D貼圖的存儲(chǔ)特點(diǎn),改變了2D貼圖的繪制方式。2D貼圖對(duì)象常以中心點(diǎn)、旋轉(zhuǎn)、縮放、紋理映射為主要屬性,根據(jù)具體應(yīng)用中貼圖的屬性的活躍程度,可以設(shè)計(jì)特定的Shader。文本使用的Shader的頂點(diǎn)屬性輸入為位置、偏移、紋理、顏色和旋轉(zhuǎn),其中位置為該頂點(diǎn)所屬貼圖的中心位置,偏移為頂點(diǎn)相對(duì)于中心位置的偏移量,而旋轉(zhuǎn)是貼圖的旋轉(zhuǎn)角度。頂點(diǎn)著色器利用位置、偏移和旋轉(zhuǎn)計(jì)算出該頂點(diǎn)的實(shí)際位置,可以減少JavaScript端的計(jì)算量。

    圖2 WebGL-DMA用于繪制貼圖的頂點(diǎn)ShaderFig.2 Vertex-shader of WebGL-DMA sprite renderer

    在初始化時(shí),使用Shader建立WebGL-DMA。貼圖對(duì)象儲(chǔ)存了中心坐標(biāo)、旋轉(zhuǎn)角度、X軸和Y軸縮放比率、紋理坐標(biāo),在繪制時(shí),貼圖被傳入WebGL-DMA,并且由貼圖繪制器將貼圖對(duì)象的屬性依次拷貝至WebGL-DMA緩存中,最后調(diào)用WebGL-DMA繪制。

    2.2 實(shí)驗(yàn)

    實(shí)驗(yàn)采用在1600*900的Canvas中,隨機(jī)位置繪制10000個(gè)32*32大小的貼圖,并應(yīng)用隨機(jī)旋轉(zhuǎn)。繪制分為初次繪制和重復(fù)繪制。采用幀間緩存的繪制方法初次繪制性能會(huì)差于重復(fù)繪制,但是考慮到實(shí)際應(yīng)用很少同時(shí)新增大量對(duì)象,而且第一幀可以采用載入方式過渡,所以重復(fù)繪制性能的重要性要大于初次繪制。

    除了Canvas2D貼圖和WebGL-DMA的2D貼圖以外,實(shí)驗(yàn)還加入了使用WebGL模擬Canvas2D的貼圖接口的繪制方式,在這種方式中,每個(gè)貼圖都會(huì)調(diào)用一次drawArrays,并使用旋轉(zhuǎn)和縮放矩陣進(jìn)行變形。

    瀏覽器方面,采用Chrome和FireFox,其中Chrome有激活Canvas2D硬件加速的選項(xiàng)。硬件方面,CPU為四核Intel(R) Q9450@2.66 GHz,顯卡為NVIDIA Quadro NVS 290,擁有8個(gè)通用流處理器。

    表1 2D貼圖繪制實(shí)驗(yàn)結(jié)果Tab.1 Sprite-rendering test result

    使用傳統(tǒng)軟件Canvas2D繪制10000貼圖時(shí),繪制用時(shí)接近1秒,只能進(jìn)行靜態(tài)展示,無法互動(dòng)。其主要開銷為計(jì)算旋轉(zhuǎn)和紋理縮放。如果取消旋轉(zhuǎn),并且將紋理大小與貼圖大小統(tǒng)一,即進(jìn)行像素對(duì)齊,可以大幅提升繪制性能,在瀏覽器啟用硬件加速的情況下,可以基本滿足互動(dòng)性??紤]到除了繪制以外的開銷,如果要求60FPS的刷新率,實(shí)際應(yīng)用中往往只能做到渲染1000至2000個(gè)小型對(duì)象,并且無法應(yīng)用旋轉(zhuǎn)和縮放。

    可以看到簡單封裝WebGL模擬Canvas2D的話,性能還不如普通的Canvas2D繪制。而使用WebGL-DMA的2D貼圖繪制方法可以將重繪用時(shí)縮小至10ms以內(nèi),基本滿足了60FPS所需要的16ms幀間間隔,而維護(hù)對(duì)象的開銷要大于繪制對(duì)象的開銷。在實(shí)際應(yīng)用中,能做到以60FPS顯示4000個(gè)動(dòng)態(tài)對(duì)象。

    3 2D線繪制加速

    除了貼圖,直線也是2D繪制比較多的對(duì)象。一些2D應(yīng)用的模型以線為主,當(dāng)模型數(shù)量眾多時(shí),畫線的性能決定了系統(tǒng)的性能。線有兩個(gè)重要屬性是顏色和寬度,在傳統(tǒng)繪制下,這兩個(gè)屬性存儲(chǔ)在Canvas2D的狀態(tài)機(jī)中。

    3.1 基于緩沖的線繪制

    使用WebGL可以把用戶繪制的線緩存起來,結(jié)束時(shí)調(diào)用一次繪制指令全部繪制。為了能一次繪制更多的線,本文將線的顏色屬性變?yōu)轫旤c(diǎn)屬性,與頂點(diǎn)的位置一起緩沖。緩沖頂點(diǎn)時(shí),也應(yīng)用全局的坐標(biāo)變換。當(dāng)繪制結(jié)束,或者線寬發(fā)生變化時(shí),將緩沖中所有的對(duì)象畫出。這種繪制方式對(duì)輸入沒有限制,與之后的方法相比,可以隨機(jī)輸入。

    3.2 基于WebGL-DMA的線繪制

    當(dāng)線作為對(duì)象的組成,對(duì)象在多次渲染間維持,WebGL-DMA就能起到作用。使用WebGL-DMA可以將對(duì)象與緩存關(guān)聯(lián)起來,降低維護(hù)緩存的開銷。

    3.3 實(shí)驗(yàn)

    實(shí)驗(yàn)采用的硬件環(huán)境與2.2相同,在1600*900的Canvas中隨機(jī)繪制10000條隨機(jī)顏色的線段,統(tǒng)計(jì)首次繪制和重復(fù)繪制的用時(shí)。

    表2 2D線繪制實(shí)驗(yàn)結(jié)果Tab.2 Line-rendering test result

    可以看出,采用緩沖加速的渲染性能和由瀏覽器帶來的硬件加速Canvas2D相似,而采用WebGL-DMA后,重繪性能還可以提升一倍。其中WebGL-DMA初繪時(shí)間較長是因?yàn)槭褂玫木€解釋器支持對(duì)繪制對(duì)象中使用多個(gè)線段情況的解釋。

    4 WebGL與Canvas2D混合繪制

    當(dāng)頁面需要呈現(xiàn)較豐富的內(nèi)容是,使用單一的Canvas難以滿足需求[8]。混合繪制是指在一個(gè)頁面上,同時(shí)使用多個(gè)Canvas進(jìn)行繪制,以達(dá)到加速的目的。WebGL沒有原生的文字繪制功能,需要使用Canvas2D繪制文字并轉(zhuǎn)換成紋理,無法完全代替Canvas2D,因此使用WebGL加速Canvas2D繪制時(shí),可以采用兩層Canvas,將可以加速的交由WebGL繪制,文字和其他功能則還由Canvas2D繪制,最終將結(jié)果結(jié)合起來。以下介紹兩種繪制的方式,可以適用于特定的情況。

    圖3 在屏混合繪制與離屏混合繪制Fig.3 On-screen layered rendering and off-screen layered rendering

    4.1 在屏的混合繪制

    在網(wǎng)頁頁面布局層垂直顯示多個(gè)Canvas,使用z-index確定遮擋關(guān)系,再利用絕對(duì)位置定位。這種混合繪制的特點(diǎn)是對(duì)瀏覽器和硬件的要求低,并且多個(gè)Canvas可以獨(dú)立設(shè)置渲染方式,兼容性較好。缺點(diǎn)是Canvas之間只能應(yīng)用DOM渲染的特效,并且由于固定位置分辨率難以調(diào)整。

    4.2 離屏的混合繪制

    離屏混合繪制則是指在網(wǎng)頁上只顯示一個(gè)主Canvas,其他的Canvas離屏渲染,并且轉(zhuǎn)換為紋理,最終繪制在主Canvas上,方便顯示控制。Canvas中無論是2D還是3D繪制使用紋理的接口,都可以使用另一個(gè)Canvas作為紋理對(duì)象。在主Canvas使用WebGL的情況下,離屏Canvas還可以使用WebGL的FrameBuffer虛擬。在一個(gè)比較好的離屏混合繪制方案中,主Canvas使用WebGL,離屏Canvas則使用WebGL繪制圖形、Canvas2D繪制文字。這樣在調(diào)整分辨率時(shí),只用調(diào)整主Canvas的尺寸,而WebGL的特性使得繪制的結(jié)果自然填滿整個(gè)Canvas。并且在顯示各個(gè)離屏Canvas時(shí),可以應(yīng)用各種特效。混合繪制的缺點(diǎn)則是需要額外的顯示離屏Canvas的過程,如果瀏覽器不支持Canvas2D的硬件加速,會(huì)使Canvas2D對(duì)象轉(zhuǎn)換為WebGL紋理的過程產(chǎn)生巨大開銷,因此兼容性較難控制。

    4.3 實(shí)際應(yīng)用

    本文研究并開發(fā)了一款網(wǎng)頁彈幕游戲引擎JavaSTaGe[9]。STG游戲中的指玩家需要操作一個(gè)物體或角色,發(fā)射子彈擊毀敵人,同時(shí)躲避敵人子彈的游戲。彈幕游戲是STG游戲的一類,通常是指平均子彈判定大小與玩家的判定大小相似或更大,場(chǎng)上子彈的數(shù)量眾多,姿態(tài)各異,玩家需要快速反應(yīng)并回避。由于對(duì)與畫面的連續(xù)性,操作的敏感性要求很高,彈幕游戲的畫面實(shí)際刷新率必須穩(wěn)定在60Hz,并能夠渲染上千的子彈。

    JavaSTaGe引擎的設(shè)計(jì)原則是高度可編程。引擎本身并沒有渲染器,只提供紋理管理系統(tǒng),可以由游戲腳本指定渲染器和渲染流程。JavaSTaGe自帶的游戲腳本使用了離屏混合繪制方式,將游戲背景、游戲場(chǎng)地、UI三層繪制在一個(gè)主Canvas中,因支持全屏模式,其中游戲背景為Canvas2D,只在變化時(shí)繪制一次;游戲場(chǎng)地為WebGL的Frame-Buffer,3D場(chǎng)地背景和2D角色與子彈等依次繪制在游戲場(chǎng)地中;UI為Canvas2D,由一個(gè)雜項(xiàng)渲染器繪制,主要負(fù)責(zé)繪制菜單、得分等文本信息。繪制2D與子彈的渲染器使用了WebGL-DMA技術(shù),在保證所有物體的遮擋關(guān)系和繪制順序的前提下,將所有同一層使用同一個(gè)紋理的貼圖分配給一個(gè)WebGL-DMA對(duì)象渲染。在渲染流程復(fù)雜的同時(shí),游戲開發(fā)者使用起來卻相對(duì)簡單,只要指定好對(duì)象所在的層和其render屬性所屬的渲染器及參數(shù),將物體放入物體池中,引擎會(huì)自動(dòng)找到相應(yīng)的渲染流程并繪制到相應(yīng)的場(chǎng)景中。

    圖4 在JavaSTaGe游戲引擎在瀏覽器中的實(shí)際運(yùn)行效果Fig.4 JavaSTaGe game demo on Chrome

    圖3 為JavaSTaGe引擎的自帶游戲腳本中,開啟了3D背景和子彈對(duì)玩家的碰撞檢測(cè),以60FPS渲染4000個(gè)隨機(jī)種類和顏色的子彈,所有的子彈都應(yīng)用了觸壁反彈并改變朝向的腳本。

    除了繪制高度可編程,JavaSTaGe引擎還提供了一套完整的物理、音效、Replay、多人聯(lián)機(jī)、手柄接口,達(dá)到甚至超越了常見桌面版STG腳本引擎的特性和性能。

    5 總結(jié)

    本文通過對(duì)Canvas中Canvas2D接口與WebGL接口的分析,提出了使用WebGL來加速Canvas中的2D繪制的思路和原理,指出幾種能夠減少WebGL的API調(diào)用的方法,并進(jìn)一步設(shè)計(jì)了WebGL-DMA架構(gòu),用以加速大量對(duì)象的繪制。通過對(duì)比試驗(yàn),證實(shí)使用WebGL緩沖技術(shù)可以實(shí)現(xiàn)與硬件加速Canvas2D相似的性能,而對(duì)于在多幀之間重復(fù)繪制的對(duì)象,引入WebGL-DMA可以在此基礎(chǔ)上大幅增加重復(fù)繪制的性能。配合混合繪制技術(shù),瀏覽器的Canvas應(yīng)用可以達(dá)到接近以前桌面版應(yīng)用的水準(zhǔn)。如何進(jìn)一步擴(kuò)大WebGL加速的應(yīng)用范圍,以及優(yōu)化數(shù)據(jù)管理,是未來Canvas高性能繪制的研究方向。

    [1] 張玄, 黃蔚. 3D機(jī)房運(yùn)維可視化系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)[J]. 軟件, 2016, 37(7). ZHANG X, HUANG W. Design and Implementation of 3D Data Room Opration and Maintenance Visualization System [J]. Software, 2016, 37(7). (in Chinese)

    [2] Chen B, Xu Z. A framework for browser-based Multiplayer Online Games using WebGL and WebSocket[C]. Multimedia Technology (ICMT), 2011 International Conference on. IEEE, 2011: 471-474.

    [3] Rost R J. OpenGL(R) Shading Language[J]. Paperd Labs, 2004, 6(2): 201-207.

    [4] Khronos Group. OpenGL ES 2. 0 for the Web[OL]. [2016]. https://www.khronos.org/webgl/

    [5] 田金琴, 丁紅勝. 基于OpenGL程序設(shè)計(jì)的優(yōu)化探討[J]. 計(jì)算機(jī)系統(tǒng)應(yīng)用, 2006, 10: 65-68 TIAN J Q, DING H SH. The research of optimization based on OpenGL program design [J]. Computer Systems & Applications, 2006, 10: 65-68. (in Chinese)

    [6] Liu Q, Chi X. Similarities and differences between OpenGL and OpenGL ES[J]. Journal of Liaoning Technical University, 2008.

    [7] Krzeminski M. OpenGL Batch Rendering[OL]. [2014]. http:// www.gamedev.net/page/resources/_/technical/opengl/openglbatch-rendering-r3900.

    [8] 龔昊, 張琦. 數(shù)據(jù)中心三維可視化管理軟件的設(shè)計(jì)與實(shí)現(xiàn)[J]. 軟件, 2012, 33(11): 68-71. GONG H, ZHANG Q. The Design and Implementation of the 3D Visualization of Data Center Management[J]. Software, 2012, 33(11): 68-71. (in Chinese).

    [9] 謝賢博. JavaSTaGe README. md[OL]. [2016]. https:// github. com/ExboCooope/JavaSTaGe/blob/master/README. Md.

    Accelerated 2D Rendering for Canvas Element based on WebGL

    XIE Xian-bo, NIE Yun, DENG Hong-yan, ZHANG Yu
    (North China Institute of Computer Technology, Beijing 100083, China)

    HTML5 introduced canvas element which significantly enhanced the graphic expressiveness of web pages. Two rendering context is based on Canvas element. Canvas 2D context is used for rendering 2D content. WebGL context is a subset of OpenGL-ES aiming at rendering 3d content with scripts directly controlling hardware. Canvas 2D context is simple to use but cannot handle massive 2D objects in time. This paper discusses about the practice of accelerating 2D drawings using WebGL based on buffering, uniform-attributifying, caching and direct-memory-accessing techniques. Experiments and example prove the efficiency of WebGL 2D acceleration.

    Computer graphics; WebGL rendering; Design and implementation; High-performance rendering; HTML5

    TP391.41

    A

    10.3969/j.issn.1003-6970.2016.12.031

    謝賢博(1992-),男,研究生,計(jì)算機(jī)軟件與應(yīng)用;鄧紅艷,教授,空軍指揮學(xué)院,研究方向:模擬仿真專業(yè);張宇,工程師,中國電子設(shè)備系統(tǒng)工程公司研究所,研究方向:指揮自動(dòng)化專業(yè)。

    聶蕓,高級(jí)工程師,主要研究方向:圖形圖像處理技術(shù)。

    本文著錄格式:謝賢博,聶蕓. 基于WebGL的Canvas元素2D繪制加速[J]. 軟件,2016,37(12):146-152

    猜你喜歡
    著色器瀏覽器頂點(diǎn)
    過非等腰銳角三角形頂點(diǎn)和垂心的圓的性質(zhì)及應(yīng)用(下)
    基于UE4 實(shí)時(shí)射線追蹤技術(shù)的研究與探討
    基于Unity Shader石油泄漏現(xiàn)象模擬的研究
    基于IMx6的opengl圖形著色器開發(fā)研究
    中國新通信(2020年2期)2020-06-24 03:06:44
    反瀏覽器指紋追蹤
    電子制作(2019年10期)2019-06-17 11:45:14
    關(guān)于頂點(diǎn)染色的一個(gè)猜想
    環(huán)球?yàn)g覽器
    再見,那些年我們嘲笑過的IE瀏覽器
    數(shù)學(xué)問答
    瀏覽器
    色哟哟哟哟哟哟| 日韩 欧美 亚洲 中文字幕| 国产精品国产高清国产av| 中出人妻视频一区二区| 欧美日韩福利视频一区二区| 波多野结衣一区麻豆| 青草久久国产| 国产成人精品无人区| 欧美黄色片欧美黄色片| 欧美黄色片欧美黄色片| 亚洲精品一区av在线观看| 麻豆一二三区av精品| 女警被强在线播放| 老鸭窝网址在线观看| 免费高清在线观看日韩| 亚洲成人免费电影在线观看| 黄色a级毛片大全视频| 日韩一卡2卡3卡4卡2021年| 又大又爽又粗| 久久人妻福利社区极品人妻图片| 日韩欧美三级三区| 一级a爱片免费观看的视频| 手机成人av网站| 久久精品国产综合久久久| 久久国产精品人妻蜜桃| 超色免费av| 色综合站精品国产| 国产又爽黄色视频| 激情视频va一区二区三区| 看片在线看免费视频| 成年女人毛片免费观看观看9| 久久久久国内视频| 免费高清在线观看日韩| 两个人免费观看高清视频| 18禁观看日本| 欧美不卡视频在线免费观看 | 69精品国产乱码久久久| 成在线人永久免费视频| 国产蜜桃级精品一区二区三区| 12—13女人毛片做爰片一| av电影中文网址| 一级片'在线观看视频| 视频区图区小说| 午夜精品久久久久久毛片777| 欧美黑人欧美精品刺激| 三上悠亚av全集在线观看| 亚洲欧美精品综合一区二区三区| 国产精品1区2区在线观看.| 国产精品免费视频内射| 久久久久久免费高清国产稀缺| 亚洲专区字幕在线| 老司机午夜十八禁免费视频| a在线观看视频网站| 成人手机av| 日韩一卡2卡3卡4卡2021年| 久久这里只有精品19| 亚洲国产欧美一区二区综合| 久久国产精品男人的天堂亚洲| 亚洲少妇的诱惑av| 天天影视国产精品| 日韩欧美一区视频在线观看| 一二三四社区在线视频社区8| 日韩视频一区二区在线观看| 男女床上黄色一级片免费看| av中文乱码字幕在线| 夫妻午夜视频| 欧美中文综合在线视频| 黑人猛操日本美女一级片| 国产精品永久免费网站| 久久午夜综合久久蜜桃| 脱女人内裤的视频| 黄色丝袜av网址大全| 久久久国产一区二区| 国产亚洲欧美精品永久| 国产麻豆69| av福利片在线| 在线观看日韩欧美| 午夜老司机福利片| 成人亚洲精品av一区二区 | 亚洲成人久久性| 中文亚洲av片在线观看爽| 久久久久久久久免费视频了| 色尼玛亚洲综合影院| 亚洲男人的天堂狠狠| 日本三级黄在线观看| 亚洲成a人片在线一区二区| 成人黄色视频免费在线看| 国产精品 国内视频| 在线看a的网站| 国产伦人伦偷精品视频| 成人免费观看视频高清| 妹子高潮喷水视频| 国产日韩一区二区三区精品不卡| 在线观看日韩欧美| 亚洲成av片中文字幕在线观看| 欧美国产精品va在线观看不卡| 操美女的视频在线观看| avwww免费| 国产成人精品久久二区二区91| 国产免费现黄频在线看| 国产又色又爽无遮挡免费看| 亚洲 欧美 日韩 在线 免费| 日日夜夜操网爽| 久久草成人影院| 99精品久久久久人妻精品| 交换朋友夫妻互换小说| 午夜福利在线免费观看网站| 91麻豆精品激情在线观看国产 | 国产精品二区激情视频| 国产男靠女视频免费网站| 女同久久另类99精品国产91| 真人做人爱边吃奶动态| 高清欧美精品videossex| 身体一侧抽搐| 亚洲美女黄片视频| 丰满的人妻完整版| 视频区欧美日本亚洲| 国产有黄有色有爽视频| 免费搜索国产男女视频| 久久性视频一级片| 精品午夜福利视频在线观看一区| 亚洲精品国产一区二区精华液| e午夜精品久久久久久久| 伦理电影免费视频| 日日爽夜夜爽网站| 少妇 在线观看| 在线观看一区二区三区激情| 国产精品免费一区二区三区在线| 亚洲激情在线av| 精品人妻在线不人妻| 老汉色av国产亚洲站长工具| 亚洲视频免费观看视频| 天堂动漫精品| 亚洲九九香蕉| 国产精品偷伦视频观看了| 一进一出抽搐动态| 一级片'在线观看视频| 亚洲一区高清亚洲精品| 一级,二级,三级黄色视频| 黄片大片在线免费观看| 国产麻豆69| 国产精品 欧美亚洲| 精品国产乱子伦一区二区三区| 国产伦一二天堂av在线观看| 国产精品一区二区精品视频观看| 欧美日韩av久久| 又黄又爽又免费观看的视频| 老司机亚洲免费影院| 两性午夜刺激爽爽歪歪视频在线观看 | 性色av乱码一区二区三区2| 午夜亚洲福利在线播放| 亚洲九九香蕉| 99国产精品一区二区蜜桃av| 如日韩欧美国产精品一区二区三区| 这个男人来自地球电影免费观看| 久久亚洲真实| 久久99一区二区三区| 欧美黄色淫秽网站| 1024视频免费在线观看| 一级片免费观看大全| 在线观看免费日韩欧美大片| 国产成人影院久久av| 国产熟女午夜一区二区三区| 婷婷丁香在线五月| 中文字幕av电影在线播放| 一二三四在线观看免费中文在| 女人被躁到高潮嗷嗷叫费观| 久久婷婷成人综合色麻豆| 午夜视频精品福利| 国产av在哪里看| 长腿黑丝高跟| 狠狠狠狠99中文字幕| 波多野结衣一区麻豆| 国产激情久久老熟女| 伦理电影免费视频| 精品高清国产在线一区| 99国产精品一区二区三区| 嫩草影视91久久| 1024香蕉在线观看| 18禁美女被吸乳视频| 亚洲五月婷婷丁香| 久久久国产成人免费| 一区二区三区精品91| 男人操女人黄网站| 国产精品秋霞免费鲁丝片| 国产高清videossex| 老司机亚洲免费影院| 在线视频色国产色| 欧美激情极品国产一区二区三区| 又大又爽又粗| 99精品久久久久人妻精品| www国产在线视频色| 亚洲色图综合在线观看| 亚洲精品一卡2卡三卡4卡5卡| 亚洲专区国产一区二区| 悠悠久久av| 午夜福利一区二区在线看| 一区福利在线观看| 久久香蕉国产精品| 国产精品成人在线| 免费av中文字幕在线| 欧美精品啪啪一区二区三区| 91字幕亚洲| 波多野结衣av一区二区av| 亚洲自拍偷在线| 丰满的人妻完整版| 国产精品av久久久久免费| 99在线视频只有这里精品首页| 国产亚洲欧美精品永久| 制服人妻中文乱码| 日韩大尺度精品在线看网址 | 国产激情久久老熟女| 高潮久久久久久久久久久不卡| 黑人操中国人逼视频| 久久久久国产精品人妻aⅴ院| 亚洲人成网站在线播放欧美日韩| 免费在线观看影片大全网站| 男女午夜视频在线观看| 欧美日本中文国产一区发布| 淫秽高清视频在线观看| 嫩草影院精品99| 99国产精品一区二区蜜桃av| 日韩大码丰满熟妇| 欧美色视频一区免费| 亚洲欧美激情综合另类| 国产亚洲欧美精品永久| 国产高清国产精品国产三级| 可以在线观看毛片的网站| 国产亚洲精品一区二区www| 天天添夜夜摸| 午夜福利在线观看吧| 人人妻,人人澡人人爽秒播| 在线观看www视频免费| ponron亚洲| 精品久久久久久,| 国产免费av片在线观看野外av| 99在线人妻在线中文字幕| 久久人妻福利社区极品人妻图片| 中亚洲国语对白在线视频| 午夜精品久久久久久毛片777| 国产区一区二久久| 亚洲精品国产一区二区精华液| 9色porny在线观看| 伦理电影免费视频| 两人在一起打扑克的视频| 亚洲欧美精品综合久久99| 久久人妻av系列| 免费在线观看日本一区| 久久久国产一区二区| 国产欧美日韩一区二区精品| 久久精品亚洲av国产电影网| 桃红色精品国产亚洲av| 高清毛片免费观看视频网站 | 美女高潮喷水抽搐中文字幕| 精品电影一区二区在线| 又黄又爽又免费观看的视频| 丝袜美足系列| 真人做人爱边吃奶动态| 精品国产国语对白av| 色播在线永久视频| 国产免费男女视频| 国产精品久久久久成人av| 国产激情欧美一区二区| 50天的宝宝边吃奶边哭怎么回事| 怎么达到女性高潮| 在线观看免费高清a一片| 亚洲国产精品合色在线| 男女下面进入的视频免费午夜 | 一个人免费在线观看的高清视频| 国产精品久久久久久人妻精品电影| 亚洲成国产人片在线观看| av电影中文网址| 在线观看一区二区三区激情| 精品免费久久久久久久清纯| 国产单亲对白刺激| 午夜福利影视在线免费观看| 妹子高潮喷水视频| 久久精品国产清高在天天线| 亚洲黑人精品在线| 法律面前人人平等表现在哪些方面| 亚洲中文日韩欧美视频| 成人av一区二区三区在线看| 久久精品人人爽人人爽视色| 日本wwww免费看| 99久久99久久久精品蜜桃| 亚洲国产欧美日韩在线播放| 欧美黑人欧美精品刺激| 日韩大码丰满熟妇| 亚洲第一欧美日韩一区二区三区| 久久久久久久久免费视频了| 国产视频一区二区在线看| 国产一区在线观看成人免费| 人成视频在线观看免费观看| 亚洲欧美精品综合久久99| 韩国av一区二区三区四区| ponron亚洲| 国产精品香港三级国产av潘金莲| 19禁男女啪啪无遮挡网站| 一边摸一边抽搐一进一小说| 欧美丝袜亚洲另类 | 国产精华一区二区三区| 精品国产一区二区久久| 久久午夜综合久久蜜桃| 欧美 亚洲 国产 日韩一| 欧美亚洲日本最大视频资源| 日韩精品免费视频一区二区三区| 成人免费观看视频高清| 亚洲人成电影观看| 久久精品国产99精品国产亚洲性色 | 中出人妻视频一区二区| 免费久久久久久久精品成人欧美视频| 久久国产亚洲av麻豆专区| 一边摸一边做爽爽视频免费| 一级a爱片免费观看的视频| 久久久久久久午夜电影 | 99国产精品一区二区三区| 国产精品综合久久久久久久免费 | 高清欧美精品videossex| 国产男靠女视频免费网站| 国产av一区二区精品久久| 99精国产麻豆久久婷婷| 99riav亚洲国产免费| 免费在线观看亚洲国产| 级片在线观看| 高清欧美精品videossex| 亚洲精品国产区一区二| av天堂在线播放| 日本免费一区二区三区高清不卡 | www.熟女人妻精品国产| 精品国产乱子伦一区二区三区| 一本大道久久a久久精品| 久久久久久免费高清国产稀缺| 韩国精品一区二区三区| 日韩欧美一区视频在线观看| 国产精品久久久人人做人人爽| 亚洲熟妇中文字幕五十中出 | 成人三级做爰电影| 国产精品电影一区二区三区| 色老头精品视频在线观看| 天堂俺去俺来也www色官网| 黄色女人牲交| 一边摸一边抽搐一进一小说| 可以免费在线观看a视频的电影网站| 欧美乱码精品一区二区三区| 乱人伦中国视频| 一区二区日韩欧美中文字幕| 久久亚洲真实| 高清在线国产一区| 麻豆久久精品国产亚洲av | 久久影院123| 18禁观看日本| 日日干狠狠操夜夜爽| 成人亚洲精品av一区二区 | 嫩草影院精品99| 亚洲国产中文字幕在线视频| 国产精品综合久久久久久久免费 | 欧美日韩黄片免| 男女床上黄色一级片免费看| 黄色片一级片一级黄色片| 高清欧美精品videossex| 黄色女人牲交| 亚洲色图 男人天堂 中文字幕| 精品一区二区三区av网在线观看| 夜夜看夜夜爽夜夜摸 | 国产成人精品久久二区二区91| 搡老乐熟女国产| 亚洲精品一区av在线观看| 一个人观看的视频www高清免费观看 | 无人区码免费观看不卡| 麻豆一二三区av精品| 99国产极品粉嫩在线观看| 久久人妻福利社区极品人妻图片| 首页视频小说图片口味搜索| 日韩国内少妇激情av| 亚洲片人在线观看| 久久久久国内视频| 精品国产乱子伦一区二区三区| 12—13女人毛片做爰片一| 日韩三级视频一区二区三区| 欧美丝袜亚洲另类 | 97人妻天天添夜夜摸| av在线播放免费不卡| 国产精品久久久久久人妻精品电影| 亚洲avbb在线观看| 欧美精品亚洲一区二区| 国产蜜桃级精品一区二区三区| 久久精品成人免费网站| svipshipincom国产片| 中文亚洲av片在线观看爽| 长腿黑丝高跟| 这个男人来自地球电影免费观看| 看黄色毛片网站| 午夜福利一区二区在线看| 免费在线观看黄色视频的| 欧美不卡视频在线免费观看 | 国产又色又爽无遮挡免费看| 免费看十八禁软件| 在线观看免费高清a一片| 99re在线观看精品视频| 麻豆国产av国片精品| 91在线观看av| 免费在线观看完整版高清| 女人精品久久久久毛片| 欧美日韩瑟瑟在线播放| 国产一卡二卡三卡精品| 日本一区二区免费在线视频| 亚洲一区中文字幕在线| 女生性感内裤真人,穿戴方法视频| 色综合欧美亚洲国产小说| 国产精品综合久久久久久久免费 | 国产主播在线观看一区二区| 亚洲人成电影免费在线| 色老头精品视频在线观看| 日韩视频一区二区在线观看| 久久久国产成人免费| 午夜成年电影在线免费观看| 在线观看一区二区三区激情| 免费不卡黄色视频| 国产精品久久久人人做人人爽| 女警被强在线播放| 激情视频va一区二区三区| 精品福利永久在线观看| 一本大道久久a久久精品| 国产欧美日韩一区二区三区在线| 日日夜夜操网爽| 少妇被粗大的猛进出69影院| 欧美日韩亚洲国产一区二区在线观看| 波多野结衣高清无吗| 午夜精品久久久久久毛片777| 老司机在亚洲福利影院| 琪琪午夜伦伦电影理论片6080| 黄色丝袜av网址大全| 精品久久久久久,| 操出白浆在线播放| 欧美日韩视频精品一区| 精品国内亚洲2022精品成人| 国产精品影院久久| 日韩人妻精品一区2区三区| 可以在线观看毛片的网站| 日韩 欧美 亚洲 中文字幕| 国产精华一区二区三区| 一区二区三区国产精品乱码| 99re在线观看精品视频| 国产熟女午夜一区二区三区| 两性午夜刺激爽爽歪歪视频在线观看 | 国产高清国产精品国产三级| 成人18禁在线播放| 老司机靠b影院| 国产伦人伦偷精品视频| 国产精品久久电影中文字幕| 色哟哟哟哟哟哟| 国内毛片毛片毛片毛片毛片| 一级毛片女人18水好多| 久久精品国产清高在天天线| tocl精华| 久热爱精品视频在线9| 国产有黄有色有爽视频| 夜夜躁狠狠躁天天躁| 久热这里只有精品99| 欧美中文日本在线观看视频| 日韩免费av在线播放| 一边摸一边抽搐一进一小说| 欧美最黄视频在线播放免费 | 国产欧美日韩一区二区三| 美女 人体艺术 gogo| 亚洲专区国产一区二区| 精品久久久久久久毛片微露脸| 男女高潮啪啪啪动态图| 成人国产一区最新在线观看| a级毛片在线看网站| 精品高清国产在线一区| 国产精品国产av在线观看| 国产麻豆69| 老司机在亚洲福利影院| 黄色视频不卡| av网站在线播放免费| 国产深夜福利视频在线观看| 欧美精品一区二区免费开放| 国产精品一区二区精品视频观看| 亚洲成人精品中文字幕电影 | 亚洲欧美激情综合另类| 精品福利观看| av有码第一页| www.精华液| 伊人久久大香线蕉亚洲五| a级毛片在线看网站| 午夜日韩欧美国产| 精品国产美女av久久久久小说| 18禁黄网站禁片午夜丰满| 777久久人妻少妇嫩草av网站| 国产一区二区在线av高清观看| 老司机福利观看| 国产欧美日韩一区二区三区在线| 男女下面插进去视频免费观看| 国产99久久九九免费精品| 巨乳人妻的诱惑在线观看| 欧美日韩视频精品一区| 欧美精品啪啪一区二区三区| 日本黄色日本黄色录像| 欧美另类亚洲清纯唯美| 天天躁夜夜躁狠狠躁躁| 麻豆av在线久日| 欧美乱码精品一区二区三区| a级片在线免费高清观看视频| 性少妇av在线| 999久久久精品免费观看国产| 18禁美女被吸乳视频| 日日爽夜夜爽网站| 1024香蕉在线观看| 99久久综合精品五月天人人| 999精品在线视频| 男女之事视频高清在线观看| 一级毛片女人18水好多| 亚洲av美国av| 制服人妻中文乱码| 在线观看免费视频网站a站| 十分钟在线观看高清视频www| 日韩精品青青久久久久久| 日韩高清综合在线| 亚洲专区字幕在线| 19禁男女啪啪无遮挡网站| 在线播放国产精品三级| 黄色 视频免费看| 一区二区三区精品91| 一级黄色大片毛片| 又大又爽又粗| 在线观看66精品国产| 电影成人av| 午夜激情av网站| 电影成人av| 9热在线视频观看99| 中文字幕另类日韩欧美亚洲嫩草| 香蕉久久夜色| 久久人妻熟女aⅴ| 热99国产精品久久久久久7| 亚洲性夜色夜夜综合| 亚洲色图综合在线观看| 欧美老熟妇乱子伦牲交| 久久久久精品国产欧美久久久| 国产av一区二区精品久久| 在线播放国产精品三级| 在线永久观看黄色视频| 欧美中文综合在线视频| 日本 av在线| 精品久久久久久成人av| avwww免费| 高清av免费在线| 亚洲少妇的诱惑av| 视频区图区小说| 国产欧美日韩一区二区三区在线| 日韩高清综合在线| 777久久人妻少妇嫩草av网站| 国产亚洲精品久久久久5区| 看片在线看免费视频| 亚洲av日韩精品久久久久久密| 亚洲欧洲精品一区二区精品久久久| 日韩欧美一区视频在线观看| 人妻久久中文字幕网| 在线观看一区二区三区| 夫妻午夜视频| 欧美午夜高清在线| 国产精品一区二区免费欧美| 日本精品一区二区三区蜜桃| 亚洲片人在线观看| 免费在线观看亚洲国产| 日韩精品青青久久久久久| 中文字幕人妻熟女乱码| 久久久久久免费高清国产稀缺| av福利片在线| 亚洲伊人色综图| 97超级碰碰碰精品色视频在线观看| 亚洲成人免费av在线播放| 老司机午夜十八禁免费视频| 国产欧美日韩一区二区三区在线| 国产av又大| 不卡一级毛片| 免费在线观看黄色视频的| 亚洲少妇的诱惑av| 亚洲欧美精品综合久久99| 日韩 欧美 亚洲 中文字幕| 色尼玛亚洲综合影院| 国产欧美日韩一区二区三| 国产在线精品亚洲第一网站| 成年人免费黄色播放视频| 精品高清国产在线一区| 久久久久久大精品| 精品国产国语对白av| 国产精品自产拍在线观看55亚洲| 一级毛片高清免费大全| 国产一区二区三区综合在线观看| 国产精品电影一区二区三区| 成在线人永久免费视频| 不卡av一区二区三区| 最近最新免费中文字幕在线| 一区二区三区激情视频| 欧美人与性动交α欧美精品济南到| 纯流量卡能插随身wifi吗| 99久久国产精品久久久| 亚洲成人免费av在线播放| 精品午夜福利视频在线观看一区| 国产不卡一卡二| 99久久综合精品五月天人人| 美女大奶头视频| 成人亚洲精品av一区二区 | 在线观看日韩欧美| 伊人久久大香线蕉亚洲五| 极品人妻少妇av视频| 色在线成人网| 高清av免费在线| 另类亚洲欧美激情| 91老司机精品| 黄色视频不卡| 久久精品国产综合久久久| 黄频高清免费视频| 一边摸一边抽搐一进一出视频|