欧美在线观看视频网站,亚洲熟妇色自偷自拍另类,啪啪伊人网,中文字幕第13亚洲另类,中文成人久久久久影院免费观看 ,精品人妻人人做人人爽,亚洲a视频

基于安卓控件利用OpenGL繪制圖像的方法和系統(tǒng)的制作方法

文檔序號:6622216閱讀:196來源:國知局
基于安卓控件利用OpenGL繪制圖像的方法和系統(tǒng)的制作方法
【專利摘要】一種基于安卓控件利用OpenGL繪制圖像的方法及系統(tǒng),所述方法包括如下步驟:提取原本將要由安卓控件顯示的圖像,將所述圖像傳遞至上層動畫層,利用OpenGL將所述圖像轉(zhuǎn)換為紋理;獲取在每一幀刷新時的紋理位置;根據(jù)上一步計算得到的紋理位置,利用GPU顯示所述紋理。本發(fā)明解決了安卓系統(tǒng)動畫顯示效率低的問題,使得能夠在現(xiàn)有的硬件配置的情況下,提高了動畫顯示效率,滿足了用戶對于處理反饋及時性的需求,提高了用戶使用安卓系統(tǒng)的用戶體驗。
【專利說明】基于安卓控件利用OpenGL繪制圖像的方法和系統(tǒng)

【技術(shù)領(lǐng)域】
[0001] 本申請涉及繪制圖像以進行動畫顯示的【技術(shù)領(lǐng)域】,具體的,涉及利用基于安卓控 件利用OpenGL繪制圖像的方法和系統(tǒng)。

【背景技術(shù)】
[0002] 隨著互聯(lián)網(wǎng)技術(shù)的方案,形形色色的電子設(shè)備越來越受到消費者青睞。而在這些 電子系統(tǒng)中,安卓(Android)系統(tǒng)是使用最為廣泛的一種系統(tǒng)。為了提高用戶的使用感受, 目前電子設(shè)備希望盡可能的提高運算速度,特別是基于圖像的運算速度,避免緩慢的運行 電子設(shè)備。提高圖像運算速率最簡單的方法就是提高硬件運算頻率,而這將會造成成本的 極大提高。特別是在顯示一些動畫時,安卓系統(tǒng)非常難做到一些動畫效果。尤其是,由于安 卓系統(tǒng)主要在CPU上進行圖像運算繪制,效率很低。制作特殊平面圖像或圖形非常復(fù)雜,而 且處理運算相當(dāng)緩慢,難以滿足目前用戶對處理反饋及時性。
[0003] 比如,用戶在使用安卓系統(tǒng),當(dāng)屏幕坐標,例如手指,從一個控件移動到另外一個 控件時,往往會用一個動態(tài)的圖像,即一個動畫來表示,這個控件移動過程,并且突出表現(xiàn) 所移動到的安卓控件,使得用戶清楚地明白自己在如何操作屏幕。這種現(xiàn)實要求較高的實 時性,現(xiàn)有的顯示方式,往往用戶移動手指很久了,還沒有顯示移動的過程,用戶使用感受 極差。
[0004] 因此,如何基于現(xiàn)有的安卓系統(tǒng),提高安卓系統(tǒng)對于圖像,特別是對于由于安卓控 件移動而導(dǎo)致的動畫顯示的速度成為現(xiàn)有技術(shù)亟需解決的技術(shù)問題。


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

[0005] 本發(fā)明的目的在于提出一種基于安卓控件利用OpenGL繪制圖像的方法和系統(tǒng), 能夠使得安卓系統(tǒng)能夠快速的對圖畫進行顯示。
[0006] 為達此目的,本發(fā)明采用以下技術(shù)方案: 一種基于安卓控件利用OpenGL繪制圖像的方法,包括如下步驟: 紋理內(nèi)容獲取步驟:提取原本將要由安卓控件顯示的圖像,將所述圖像傳遞至上層動 畫層,利用OpenGL將所述圖像轉(zhuǎn)換為紋理; 紋理位置獲取步驟:獲取在每一幀刷新時的紋理位置; 紋理圖像顯示步驟:根據(jù)上一步計算得到的紋理位置,利用GPU顯示所述紋理。
[0007] 優(yōu)選地,其中,在紋理內(nèi)容獲取步驟中,所述動畫層為透明層。
[0008] 優(yōu)選地,其中,在所述紋理位置獲取步驟中,紋理位置通過如下公式計算得到: Currentx = startx+(targetx-startx)氺(currentTime-startTime)/ animationDration Currenty = starty+(targety-starty)氺(currentTime-startTime)/ animationDuration 其中,Currentx和Currenty為當(dāng)前時間的紋理位置,以起始控件的位置 startx, starty為起始位置,以終點控件的位置targetx, targety為終點位置, animationDuration為設(shè)定的動畫時間,currentTime表不當(dāng)前的時間,startTime表不圖 像開始移動的時間。
[0009] 優(yōu)選地,按鍵事件和觸摸事件依然由下面一層的安卓控件處理,上面一層的動畫 層只用來顯不動趣。
[0010] 優(yōu)選地,當(dāng)用戶坐標所對應(yīng)的控件位置或者狀態(tài)發(fā)生變化,將通知動畫層發(fā)生相 應(yīng)變化,開始運行動畫。
[0011] 本發(fā)明還公開了一種基于安卓控件利用OpenGL繪制圖像的系統(tǒng),包括如下單元: 紋理內(nèi)容獲取單元:提取原本將要由安卓控件顯示的圖像,將所述圖像傳遞至上層動 畫層,利用OpenGL將所述圖像轉(zhuǎn)換為紋理; 紋理位置獲取單元:獲取在每一幀刷新時的紋理位置; 紋理圖像顯示單元:根據(jù)上一步計算得到的紋理位置,利用GPU顯示所述紋理。
[0012] 優(yōu)選地,其中,在紋理內(nèi)容獲取單元中,所述動畫層為透明層。
[0013] 優(yōu)選地,其中,在所述紋理位置獲取單元中,紋理位置通過如下公式計算得到: Currentx = startx+(targetx-startx)氺(currentTime-startTime)/ animationDration Currenty = starty+(targety-starty)*(currentTime-startTime)/ animationDuration 其中,Currentx和Currenty為當(dāng)前時間的紋理位置,以起始控件的位置 startx, starty為起始位置,以終點控件的位置targetx, targety為終點位置, an imat i onDurat i on為設(shè)定的動畫時間,currentTime表不當(dāng)前的時間,startTime表不圖 像開始移動的時間。
[0014] 優(yōu)選地,按鍵事件和觸摸事件依然由下面一層的安卓控件處理,上面一層的動畫 層只用來顯不動趣。
[0015] 優(yōu)選地,當(dāng)用戶坐標所對應(yīng)的控件位置或者狀態(tài)發(fā)生變化,將通知動畫層發(fā)生相 應(yīng)變化,開始運行動畫。
[0016] 因此,本發(fā)明解決了安卓系統(tǒng)動畫顯示效率低的問題,使得能夠在現(xiàn)有的硬件配 置的情況下,提高了動畫顯示效率,滿足了用戶對于處理反饋及時性的需求,提高了用戶使 用安卓系統(tǒng)的用戶體驗。

【專利附圖】

【附圖說明】
[0017] 圖1是根據(jù)本發(fā)明的具體實施例的基于安卓控件利用OpenGL繪制圖像的方法的 流程圖; 圖2是根據(jù)本發(fā)明的另一個具體實施例的基于安卓控件利用OpenGL繪制圖像的系統(tǒng) 的方框圖。

【具體實施方式】
[0018] 下面結(jié)合附圖和實施例對本發(fā)明作進一步的詳細說明??梢岳斫獾氖?,此處所描 述的具體實施例僅僅用于解釋本發(fā)明,而非對本發(fā)明的限定。另外還需要說明的是,為了便 于描述,附圖中僅示出了與本發(fā)明相關(guān)的部分而非全部結(jié)構(gòu)。
[0019] 本發(fā)明的原理在于:在安卓控件的表面覆蓋一層透明的動畫層,提取所要顯示的 圖像,交由OpenGL (Open Graphics Library)進行動畫顯示,將該圖像轉(zhuǎn)換為紋理,使用 GI^U覆蓋在屏幕上。從而將耗時的Π 繪制工作交由顯卡GPU處理,可以大幅度提升流暢度。 本領(lǐng)域技術(shù)人員知道,OpenGL即為現(xiàn)有技術(shù)中最為廣泛使用的2D/3D圖形API。
[0020] 參見圖1,公開了根據(jù)本發(fā)明的基于安卓控件利用OpenGL繪制圖像的方法的流程 圖,包括如下步驟: 紋理內(nèi)容獲取步驟101:提取原本將要由安卓控件顯示的圖像,將該圖像傳遞至上層 動畫層,利用OpenGL將該圖像轉(zhuǎn)換為紋理; 紋理位置獲取步驟102 :獲取在每一幀刷新時該紋理位置; 紋理圖像顯示步驟103 :根據(jù)上一步計算得到的紋理位置,利用GPU顯示所述紋理。
[0021] 其中,所述動畫層為透明層,使得紋理能夠覆蓋在透明層上進行顯示,且不影響其 它位置的圖像。
[0022] 其中,紋理位置通過如下公式計算得到: Currentx = startx+(targetx-startx)氺(currentTime-startTime)/ animationDration Currenty = starty+(targety-starty)*(currentTime-startTime)/ animationDuration 其中,Currentx和Currenty為當(dāng)前時間的紋理位置,起始控件的位置startx, starty 為起始位置,以終點控件的位置targetx, targety為終點位置,animationDuration為設(shè)定 的動畫時間,currentTime表示當(dāng)前的時間,startTime表示圖像開始移動的時間。
[0023] 本發(fā)明以當(dāng)前的時間和開始時間的差除以總共的動畫時間得出,當(dāng)前時間動畫移 動距離的百分比,再乘以動畫總距離得到當(dāng)前時間的動畫距離,再加上動畫起始位置得到 當(dāng)前時間紋理的位置。
[0024] 進一步優(yōu)選地,當(dāng)用戶從起始控件移動到終點控件時,用戶坐標所對應(yīng)的控件位 置或者狀態(tài)發(fā)生變化,將通知動畫層發(fā)生相應(yīng)變化,并且開始運行動畫。也就是說,當(dāng)用戶 所對應(yīng)的圖標發(fā)生變化時,啟動顯示對應(yīng)圖標變化過程的動畫。
[0025] 進一步優(yōu)選地,按鍵事件和觸摸事件依然由下面一層的安卓控件,即原生控件處 理,上面一層的動畫層只用來顯示動畫。
[0026] 實施例1 : 紋理內(nèi)容獲取步驟101:提取原本將要由下面一層原生控件將要繪制的圖像 (drawingcatch),再把這個圖像(bitmap)傳遞到上面一層的動畫層,所述動畫層為上面所 覆蓋的一層透明的surfaceview,利用OpenGL將該圖像轉(zhuǎn)換為紋理(texture); 紋理位置獲取步驟102 :獲取在每一幀刷新時的紋理位置; 具體為:根據(jù)下面一層原生控件的起始控件的位置作為起始位置(startx,starty) 和下一個終點控件的位置作為最終位置(target, targety),以設(shè)定的動畫時間 (animationDuration),在每次刷新屏幕時,計算出紋理位置: Currentx = startx+(targetx-startx)*(currentTime-startTime) / animationDuration Currenty = starty+(targety-starty)*(currentTime-startTime)/ animationDuration 也就是說,以當(dāng)前的時間和開始時間的差除以總共的動畫時間得出,當(dāng)前時間動畫移 動距離的百分比,再乘以動畫總距離得到當(dāng)前時間的動畫距離,再加上動畫起始位置得到 當(dāng)前時間的紋理位置。
[0027] 紋理圖像顯示步驟103 :根據(jù)上一步計算得到的紋理位置,將紋理畫到緩沖區(qū),交 給GPU進行顯示,直到動畫結(jié)束。
[0028] 其中,該動畫啟動是在原生控件的位置或者狀態(tài)發(fā)生變化而引起的,也就是當(dāng)用 戶從一個控件移動到另外一個控件,會通知動畫層進行相應(yīng)的變化,并且開始運行動畫。
[0029] 按鍵事件和觸摸事件依然由下面一層的原生控件處理,上面一層的surfaceview 只用來顯示動畫。
[0030] 因此,本發(fā)明在控件的狀態(tài)發(fā)生變化后啟動動畫顯示的過程,所述動畫表示從一 個控件到另外一個控件的動態(tài)變化。具體顯示時,在原生控件層上面覆蓋透明的動畫層,提 取每個幀刷新時將要由安卓控件繪制的圖像,轉(zhuǎn)而由OpenGL進行顯示,將這個圖像轉(zhuǎn)化成 紋理(texture),并計算在每個時刻該圖像移動的位置,使用GPU將紋理繪制到屏幕上對應(yīng) 的位置。
[0031] 其中,設(shè)定的動畫時間(animationDuration)可以人工改變,從而顯示快速或者 慢速的動畫變化的效果。
[0032] 因此,本發(fā)明解決了安卓系統(tǒng)動畫顯示效率低的問題,使得能夠在現(xiàn)有的硬件配 置的情況下,提高了動畫顯示效率,滿足了用戶對于處理反饋及時性的需求,提高了用戶使 用安卓系統(tǒng)的用戶體驗。
[0033] 參見圖2,本發(fā)明還公開了一種基于安卓控件利用OpenGL繪制圖像的系統(tǒng),其包 括如下單元: 紋理內(nèi)容獲取單元201 :提取原本將要由安卓控件顯示的圖像,將所述圖像傳遞至上 層動畫層,利用OpenGL將所述圖像轉(zhuǎn)換為紋理; 紋理位置獲取單元202 :獲取在每一幀刷新時的紋理位置; 紋理圖像顯示單元203 :根據(jù)上一步計算得到的紋理位置,利用GPU顯示所述紋理。
[0034] 優(yōu)選地,在紋理內(nèi)容獲取單元201中,所述動畫層為透明層。
[0035] 優(yōu)選地,在所述紋理位置獲取單元202中,紋理位置通過如下公式計算得到: Currentx = startx+(targetx-startx)*(currentTime-startTime)/ animationDration Currenty = starty+(targety-starty)氺(currentTime-startTime)/ animationDuration 其中,Currentx和Currenty為當(dāng)前時間的紋理位置,以起始控件的位置 startx,starty為起始位置,以終點控件的位置targetx,targety為終點位置, animationDuration為設(shè)定的動幽時間,currentTime表不當(dāng)前的時間,startTime表不圖 像開始移動的時間。
[0036] 優(yōu)選地,按鍵事件和觸摸事件依然由下面一層的安卓控件處理,上面一層的動畫 層只用來顯不動幽。
[0037] 當(dāng)用戶坐標所對應(yīng)的控件位置或者狀態(tài)發(fā)生變化,將通知動畫層發(fā)生相應(yīng)變化, 開始運行動畫。
[0038] 顯然,本領(lǐng)域技術(shù)人員應(yīng)該明白,上述的本發(fā)明的各單元或各步驟可以用通用的 計算裝置來實現(xiàn),它們可以集中在單個計算裝置上,可選地,他們可以用計算機裝置可執(zhí) 行的程序代碼來實現(xiàn),從而可以將它們存儲在存儲裝置中由計算裝置來執(zhí)行,或者將它們 分別制作成各個集成電路模塊,或者將它們中的多個模塊或步驟制作成單個集成電路模塊 來實現(xiàn)。這樣,本發(fā)明不限制于任何特定的硬件和軟件的結(jié)合。
[0039] 以上內(nèi)容是結(jié)合具體的優(yōu)選實施方式對本發(fā)明所作的進一步詳細說明,不能認定 本發(fā)明的【具體實施方式】僅限于此,對于本發(fā)明所屬【技術(shù)領(lǐng)域】的普通技術(shù)人員來說,在不脫 離本發(fā)明構(gòu)思的前提下,還可以做出若干簡單的推演或替換,都應(yīng)當(dāng)視為屬于本發(fā)明由所 提交的權(quán)利要求書確定保護范圍。
【權(quán)利要求】
1. 一種基于安卓控件利用OpenGL繪制圖像的方法,包括如下步驟: 紋理內(nèi)容獲取步驟:提取原本將要由安卓控件顯示的圖像,將所述圖像傳遞至上層動 畫層,利用OpenGL將所述圖像轉(zhuǎn)換為紋理; 紋理位置獲取步驟:獲取在每一幀刷新時的紋理位置; 紋理圖像顯示步驟:根據(jù)上一步計算得到的紋理位置,利用GPU顯示所述紋理。
2.根據(jù)權(quán)利要求1所述的基于安卓控件利用OpenGL繪制圖像的方法,其特征在于: 其中,在紋理內(nèi)容獲取步驟中,所述動畫層為透明層。
3.根據(jù)權(quán)利要求1所述的基于安卓控件利用OpenGL繪制圖像的方法,其特征在于: 其中,在所述紋理位置獲取步驟中,紋理位置通過如下公式計算得到: Currentx = startx+(targetx-startx)氺(currentTime-startTime)/ animationDration Currenty = starty+(targety-starty)*(currentTime-startTime)/ animationDuration 其中,Currentx和Currenty為當(dāng)前時間的紋理位置,以起始控件的位置 startx, starty為起始位置,以終點控件的位置targetx, targety為終點位置, animationDuration為設(shè)定的動畫時間,currentTime表不當(dāng)前的時間,startTime表不圖 像開始移動的時間。
4.根據(jù)權(quán)利要求1所述的基于安卓控件利用OpenGL繪制圖像的方法,其特征在于: 按鍵事件和觸摸事件依然由下面一層的安卓控件處理,上面一層的動畫層只用來顯示 動畫。
5.根據(jù)權(quán)利要求1所述的基于安卓控件利用OpenGL繪制圖像的方法,其特征在于: 當(dāng)用戶坐標所對應(yīng)的控件位置或者狀態(tài)發(fā)生變化,將通知動畫層發(fā)生相應(yīng)變化,開始 運行動畫。
6. 一種基于安卓控件利用OpenGL繪制圖像的系統(tǒng),包括如下單元: 紋理內(nèi)容獲取單元:提取原本將要由安卓控件顯示的圖像,將所述圖像傳遞至上層動 畫層,利用OpenGL將所述圖像轉(zhuǎn)換為紋理; 紋理位置獲取單元:獲取在每一幀刷新時的紋理位置; 紋理圖像顯示單元:根據(jù)上一步計算得到的紋理位置,利用GPU顯示所述紋理。
7.根據(jù)權(quán)利要求6所述的基于安卓控件利用OpenGL繪制圖像的系統(tǒng),其特征在于: 其中,在紋理內(nèi)容獲取單元中,所述動畫層為透明層。
8.根據(jù)權(quán)利要求6所述的基于安卓控件利用OpenGL繪制圖像的系統(tǒng),其特征在于: 其中,在所述紋理位置獲取單元中,紋理位置通過如下公式計算得到: Currentx = startx+(targetx-startx)*(currentTime-startTime)/ animationDration Currenty = starty+(targety-starty)*(currentTime-startTime)/ animationDuration 其中,Currentx和Currenty為當(dāng)前時間的紋理位置,以起始控件的位置 startx, starty為起始位置,以終點控件的位置targetx, targety為終點位置, an imat i onDurat i on為設(shè)定的動畫時間,currentTime表不當(dāng)前的時間,startTime表不圖 像開始移動的時間。
9.根據(jù)權(quán)利要求6所述的基于安卓控件利用OpenGL繪制圖像的系統(tǒng),其特征在于: 按鍵事件和觸摸事件依然由下面一層的安卓控件處理,上面一層的動畫層只用來顯示 動畫。
10.根據(jù)權(quán)利要求6所述的基于安卓控件利用OpenGL繪制圖像的系統(tǒng),其特征在于: 當(dāng)用戶坐標所對應(yīng)的控件位置或者狀態(tài)發(fā)生變化,將通知動畫層發(fā)生相應(yīng)變化,開始 運行動畫。
【文檔編號】G06F3/14GK104142807SQ201410376067
【公開日】2014年11月12日 申請日期:2014年8月2日 優(yōu)先權(quán)日:2014年8月2日
【發(fā)明者】韓思文, 張翀, 宋幫遠, 姚鍵, 潘柏宇, 盧述奇 申請人:合一網(wǎng)絡(luò)技術(shù)(北京)有限公司
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會獲得點贊!
1
漳平市| 苗栗市| 沾益县| 鹤岗市| 龙川县| 克什克腾旗| 增城市| 崇州市| 南康市| 剑川县| 论坛| 泰顺县| 宽城| 阿拉尔市| 东至县| 瓦房店市| 改则县| 安国市| 靖边县| 德格县| 乌兰察布市| 福贡县| 潮安县| 阿鲁科尔沁旗| 渝中区| 南雄市| 衡阳市| 南昌县| 弋阳县| 湟中县| 阿鲁科尔沁旗| 陆河县| 兴和县| 阿鲁科尔沁旗| 大同县| 台前县| 教育| 武宣县| 辽宁省| 南木林县| 恩平市|