本發(fā)明涉及計(jì)算機(jī)技術(shù)領(lǐng)域,特別是涉及基于OpenGL View的控制方法、裝置及終端。
背景技術(shù):
OpenGL(Open Graphics Library,開放式圖形庫)是定義了跨編程語言、跨平臺(tái)的編程接口規(guī)格的專業(yè)的圖形程序接口。它主要用于三維圖像、二維圖像的繪制,是一個(gè)功能強(qiáng)大、調(diào)用方便的底層圖像庫。OpenGL在游戲開發(fā)、娛樂、制造業(yè)及虛擬現(xiàn)實(shí)等多個(gè)行業(yè)領(lǐng)域中,通常被用于在硬件設(shè)備上實(shí)現(xiàn)高性能、極具沖擊力的高視覺表現(xiàn)力圖像處理軟件的開發(fā)。
現(xiàn)有大部分APP(Application,應(yīng)用程序)中,App利用OpenGL View繪制主要視圖界面,但這些APP在實(shí)現(xiàn)過程中,還需要通過系統(tǒng)自定義的View實(shí)現(xiàn)一些業(yè)務(wù)界面;例如,IOS平臺(tái)通過自定義的UI View實(shí)現(xiàn)業(yè)務(wù)界面。
用戶在使用這些APP時(shí),可以根據(jù)實(shí)際需求進(jìn)入相應(yīng)的業(yè)務(wù)界面或視圖界面,相應(yīng)地,APP響應(yīng)于用戶的操作展示對(duì)應(yīng)的業(yè)務(wù)界面或視圖界面;在界面的展示過程中,大多數(shù)情況下APP需要同時(shí)繪制視圖界面和業(yè)務(wù)界面,這會(huì)導(dǎo)致APP存在嚴(yán)重的耗電問題,在智能手機(jī)、平板電腦、游戲機(jī)等電池容量較小的終端上,這種耗電問題更加凸顯,嚴(yán)重影響用戶體驗(yàn)。
技術(shù)實(shí)現(xiàn)要素:
本發(fā)明所要解決的技術(shù)問題是提供一種基于OpenGL View的控制方法,用以解決現(xiàn)有技術(shù)中終端上運(yùn)行APP存在的耗電嚴(yán)重的問題,以提升用戶體驗(yàn)。
本發(fā)明還提供了基于OpenGL的控制裝置和終端,用以保證上述方法在實(shí)際中的實(shí)現(xiàn)及應(yīng)用。
在本發(fā)明的一個(gè)方面,提供一種基于OpenGL View的控制方法,所述方法包括:
監(jiān)控是否發(fā)生視圖變動(dòng)操作,若是,則判斷OpenGL View是否被非 OpenGL View覆蓋;所述非OpenGL View是指終端操作系統(tǒng)自定義的界面;
若是,則降低所述OpenGL View的繪制幀率。
可選的,降低所述OpenGL View的繪制幀率,具體為:
將所述OpenGL View的繪制幀率降低至預(yù)置的繪制幀率閾值,所述預(yù)置的繪制幀率閾值小于所述繪制幀率。
可選的,若判斷出所述OpenGL View是被所述非OpenGL View部分覆蓋,則所述方法還包括:
識(shí)別所述OpenGL View是否為用戶不可操作的界面,若是,則將所述OpenGL View的繪制幀率降低至預(yù)置的繪制幀率閾值。
判斷OpenGL View是否被非OpenGL View覆蓋,包括:
可選的,獲取非OpenGL View繪制區(qū)域的坐標(biāo)值和OpenGL View繪制區(qū)域的坐標(biāo)值;
通過坐標(biāo)值大小關(guān)系判斷所述非OpenGL View繪制區(qū)域與所述OpenGL View的繪制區(qū)域是否存在重疊部分,若是,表明所述OpenGL View被所述非OpenGL View覆蓋,否則,表明所述OpenGL View未被所述非OpenGL View覆蓋。
在本發(fā)明的第二方面,提供一種基于OpenGL View的控制裝置,所述裝置包括:
監(jiān)控單元,用于監(jiān)控是否發(fā)生視圖變動(dòng)操作;若是,觸發(fā)判斷單元;
判斷單元,用于判斷OpenGL View是否被非OpenGL View覆蓋;所述非OpenGL View是指終端操作系統(tǒng)自定義的界面;若是,觸發(fā)降低單元;
降低單元,用于降低所述OpenGL View的繪制幀率。
可選的,所述降低單元,具體用于將所述OpenGL View的繪制幀率降低至預(yù)置的繪制幀率閾值,所述預(yù)置的繪制幀率閾值小于所述繪制幀率。
可選的,當(dāng)所述判斷單元判斷出所述OpenGL View是被所述非OpenGL View部分覆蓋,則所述裝置還包括:
識(shí)別單元,用于識(shí)別所述OpenGL View是否為用戶不可操作的界面,若是,則觸發(fā)所述降低單元將所述OpenGL View的繪制幀率降低至預(yù)置的繪制幀率閾值。
可選的,所述判斷單元,包括:
獲取子單元,用于獲取非OpenGL View繪制區(qū)域的坐標(biāo)值和OpenGL View繪制區(qū)域的坐標(biāo)值;
比較子單元,用于通過坐標(biāo)值大小關(guān)系判斷所述非OpenGL View繪制區(qū)域與所述OpenGL View的繪制區(qū)域是否存在重疊部分,若是,表明所述OpenGL View被所述非OpenGL View覆蓋,否則,表明所述OpenGL View未被所述非OpenGL View覆蓋。
在本發(fā)明第三方面,提供了一種終端,所述終端包括:
APP和上述第二方面描述的基于OpenGL的控制控制裝置;
所述APP基于OpenGL View和終端操作系統(tǒng)自定義的界面實(shí)現(xiàn)畫面展示功能;所述APP通過所述基于OpenGL View的控制裝置實(shí)現(xiàn)對(duì)OpenGL View的繪制。
由上述實(shí)施例可以看出,與現(xiàn)有技術(shù)相比本發(fā)明的優(yōu)點(diǎn)在于:
本發(fā)明監(jiān)控是否發(fā)生視圖變動(dòng)操作,若是,則判斷OpenGL View是否被非OpenGL View覆蓋;所述非OpenGL View是指終端操作系統(tǒng)自定義的界面;在判斷出所述OpenGL View被所述非OpenGL View覆蓋時(shí),降低所述OpenGL View的繪制幀率。本發(fā)明在OpenGL View和非OpenGL View混合使用且OpenGL View被覆蓋的情況下,及時(shí)降低OpenGL View的繪制幀率,這樣使得OpenGL View的CPU占用量隨之降低,節(jié)省APP運(yùn)行時(shí)的耗電量,提高用戶體驗(yàn)。
附圖說明
為了更清楚地說明本發(fā)明實(shí)施例或現(xiàn)有技術(shù)中的技術(shù)方案,下面將對(duì)實(shí)施例或現(xiàn)有技術(shù)描述中所需要使用的附圖作簡單地介紹,顯而易見地,下面描述中的附圖僅僅是本發(fā)明的一些實(shí)施例,對(duì)于本領(lǐng)域普通技術(shù)人員來講,在不付出創(chuàng)造性勞動(dòng)性的前提下,還可以根據(jù)這些附圖獲得其他的附圖。
圖1為本發(fā)明提供的一種基于OpenGL View的控制方法的流程圖;
圖2a-圖2b為本發(fā)明提供的地圖APP的應(yīng)用場景示意圖;
圖3為本發(fā)明提供的一種基于OpenGL View的控制裝置的結(jié)構(gòu)圖。
具體實(shí)施方式
下面將結(jié)合本發(fā)明實(shí)施例中附圖,對(duì)本發(fā)明實(shí)施例中的技術(shù)方案進(jìn)行清楚、完整地描述,顯然,所描述的實(shí)施例僅僅是本發(fā)明一部分實(shí)施例,而不是全部的實(shí)施例。通常在此處附圖中描述和示出的本發(fā)明實(shí)施例的組件可以以各種不同的配置來布置和設(shè)計(jì)。因此,以下對(duì)在附圖中提供的本發(fā)明的實(shí)施例的詳細(xì)描述并非旨在限制要求保護(hù)的本發(fā)明的范圍,而是僅僅表示本發(fā)明的選定實(shí)施例?;诒景l(fā)明的實(shí)施例,本領(lǐng)域技術(shù)人員在沒有做出創(chuàng)造性勞動(dòng)的前提下所獲得的所有其他實(shí)施例,都屬于本發(fā)明保護(hù)的范圍。
下面通過實(shí)施例進(jìn)行描述。
參閱圖1,圖1為本發(fā)明提供的一種基于OpenGL View的控制方法的流程圖,如圖1所示,本實(shí)施例的方法可以包括:
S101,監(jiān)控是否發(fā)生視圖變動(dòng)操作,若是,則進(jìn)入步驟S102。
S102,判斷OpenGL View是否被非OpenGL View覆蓋;所述非OpenGL View是指終端操作系統(tǒng)自定義的界面;若是,則進(jìn)入步驟S103。
S103,降低所述OpenGL View的繪制幀率。
本實(shí)施例的方法具體應(yīng)用于控制終端上安裝的基于OpenGL View實(shí)現(xiàn)視圖界面的APP,例如,游戲APP、地圖APP等等,這類APP在工作時(shí),利用OpenGL View繪制視圖界面,利用終端操作系統(tǒng)自定義的非OpenGL View繪制其他界面。
目前終端常用的操作系統(tǒng)有多種類型,如IOS、Android、Windows等等,不同的操作系統(tǒng)為了支持APP的應(yīng)用,提供了自定義的View以供APP實(shí)現(xiàn)業(yè)務(wù)界面。例如,IOS自定義了UI View以供APP實(shí)現(xiàn)業(yè)務(wù)界面。
在實(shí)際應(yīng)用中,本發(fā)明提供了如下方式,用于判斷OpenGL View是否被所述非OpenGL View覆蓋,該方式包括:
S1021,獲取所述非OpenGL View繪制區(qū)域的坐標(biāo)值和所述OpenGL View繪制區(qū)域的坐標(biāo)值;以及,
S1022,通過坐標(biāo)值大小關(guān)系判斷所述非OpenGL View繪制區(qū)域與所述OpenGL View的繪制區(qū)域是否存在重疊部分,若是,表明所述OpenGL View被所述非OpenGL View覆蓋,否則,表明所述OpenGL View未被所述非 OpenGL View覆蓋。
在實(shí)際應(yīng)用中,判斷OpenGL View是否被非OpenGL View覆蓋,可能出現(xiàn)以下兩種判斷情況,分別如下:
一種判斷情況:判斷出OpenGL View被非OpenGL View全部覆蓋,在這種情況下,用戶看不到OpenGL View的界面,此時(shí),降低OpenGL View的繪制幀率,對(duì)用戶體驗(yàn)不會(huì)造成任何影響。這樣處理既能夠節(jié)省APP繪制界面的耗電量,又不會(huì)影響用戶體驗(yàn)。
另一種判斷情況:判斷出OpenGL View被非OpenGL View部分覆蓋,在這種情況下,由于OpenGL View部分界面對(duì)于用戶而言是可見的,用戶可能會(huì)對(duì)部分界面進(jìn)行點(diǎn)擊、拖動(dòng)等操作,此時(shí)如果直接降低繪制幀率,畫面容易出現(xiàn)卡頓、延遲、不清楚的現(xiàn)象,就會(huì)影響用戶體驗(yàn),因此,本發(fā)明為了在不影響用戶體驗(yàn)的情況下,達(dá)到降低APP繪制界面的耗電量的目的,提出了一種實(shí)現(xiàn)方式,具體是:通過判斷OpenGL View是否為用戶不可操作的界面的方式來決定是否降低繪制幀率(APP可以預(yù)先設(shè)置OpenGL View為用戶可操作的界面,或者為用戶可不操作的界面),當(dāng)OpenGL View為用戶不可操作的界面時(shí),用戶不能對(duì)該OpenGL View作任何操作,在這種情況下,降低該OpenGL View的繪制幀率,就不會(huì)影響用戶體驗(yàn)。這樣處理既能夠節(jié)省APP繪制界面的耗電量,又不會(huì)影響用戶體驗(yàn)。
在實(shí)際應(yīng)用中,上述步驟S103可以按照如下方式實(shí)現(xiàn):
將所述OpenGL View的繪制幀率降低至預(yù)置的繪制幀率閾值,所述預(yù)置的繪制幀率閾值小于所述繪制幀率。
示例1,一般情況下,系統(tǒng)會(huì)設(shè)置OpenGL View的繪制幀率的初始值,APP在繪制OpenGL View時(shí)就按照該初始值進(jìn)行繪制,例如,系統(tǒng)設(shè)置的OpenGL View的繪制幀率的初始值為每秒10幀,那么在判斷出OpenGL View被非OpenGL View覆蓋時(shí),就降低OpenGL View的繪制幀率,即將OpenGL View的繪制幀率從該初始值降低至預(yù)置的繪制幀率閾值,該繪制幀率閾值小于初始值,如預(yù)置的繪制幀率閾值為每秒2幀時(shí),則直接將OpenGL View的繪制幀率從初始值每秒10幀降低至每秒2幀。
在實(shí)際應(yīng)用中,發(fā)明人發(fā)現(xiàn)逐漸降低OpenGL View的繪制幀率,就會(huì)逐 漸減小對(duì)CPU的占用,耗電量就會(huì)逐漸越小。因此,為了最大限度地減小繪制OpenGL View的耗電量,在實(shí)際應(yīng)用中還可以將所述預(yù)置的繪制幀率閾值設(shè)置為0,這樣,在判斷出所述OpenGL View被所述非OpenGL View覆蓋時(shí),降低所述OpenGL View繪制幀率至零,以停止OpenGL View繪制。
從本發(fā)明上述實(shí)施例可以看出,本發(fā)明在OpenGL View和非OpenGL View混合使用且OpenGL View被覆蓋的情況下,及時(shí)降低OpenGL View的繪制幀率,利用這種處理方式使得OpenGL View的CPU占用量隨之降低,節(jié)省APP運(yùn)行時(shí)的耗電量,提高用戶體驗(yàn)。
在實(shí)際應(yīng)用中,用戶可可能在觸發(fā)了相關(guān)業(yè)務(wù)界面之后,又觸發(fā)了顯示OpenGL View的操作,此時(shí)用戶需要看到完整的、質(zhì)量較高的畫面,針對(duì)這種應(yīng)用場景,本發(fā)明還提供了一種實(shí)現(xiàn)方案,即在上述步驟101-103執(zhí)行完畢之后,APP的OpenGL View的繪制幀率已經(jīng)小于初始值,在此之后,在接收到用戶觸發(fā)的顯示OpenGL View請(qǐng)求時(shí),將所述OpenGL View的繪制幀率恢復(fù)至初始值。
在APP的OpenGL View的繪制幀率已經(jīng)小于初始值的情況下,如果接收到用戶觸發(fā)的顯示OpenGL View請(qǐng)求,由于用戶對(duì)OpenGL View畫面質(zhì)量有非常高的要求,此時(shí),如果繪制幀率小于初始值,則畫面質(zhì)量較差,容易出現(xiàn)畫面卡頓、跳躍的現(xiàn)象,影響用戶體驗(yàn)。此時(shí)通過恢復(fù)繪制幀率至初始值的方式,保證OpenGL View的畫面質(zhì)量滿足用戶的視覺體驗(yàn)要求。
下面以在終端上運(yùn)行地圖APP的場景為一個(gè)示例,對(duì)本發(fā)明實(shí)施例的應(yīng)用進(jìn)行解釋說明。參見圖2a-圖2b,圖2a-圖2b是地圖APP的應(yīng)用場景示意圖,該終端采用IOS操作系統(tǒng),則地圖APP采用OpenGL View繪制地圖界面,采用IOS自定義的UI View繪制業(yè)務(wù)界面;地圖APP會(huì)按照終端操作系統(tǒng)設(shè)置的OpenGL View的繪制幀率的初始值繪制OpenGL View。一般情況下,地圖APP會(huì)將預(yù)設(shè)的地圖界面作為首頁(如圖2a所示),用戶在該首頁上可以執(zhí)行相應(yīng)的操作,如點(diǎn)擊進(jìn)入搜索界面,對(duì)應(yīng)地,地圖APP向用戶提供一個(gè)搜索界面(如圖2b所示),該搜索界面為用戶提供搜索服務(wù),用戶在該搜索界面上輸入感興趣的信息,地圖APP響應(yīng)于用戶的搜索請(qǐng)求,為用戶繪制對(duì)應(yīng)的地圖界面。
在用戶點(diǎn)擊進(jìn)入搜索界面時(shí),對(duì)應(yīng)的地圖APP能夠監(jiān)控到視圖變動(dòng)操作,進(jìn)而判斷OpenGL View是否被搜索界面(非OpenGL View)覆蓋,當(dāng)判斷出遮蓋時(shí),則降低OpenGL View的繪制幀率。
在完成上述路線搜索之后,用戶觸發(fā)APP返回至地圖界面時(shí),此時(shí),APP應(yīng)該恢復(fù)OpenGL View的繪制幀率至初始值,以保證OpenGL View的畫面質(zhì)量滿足用戶視覺需求。
從本發(fā)明上述實(shí)施例可以看出,本發(fā)明在OpenGL View和非OpenGL View混合使用且OpenGL View被全面覆蓋的情況下,降低OpenGL View的繪制幀率,這樣使得OpenGL View的CPU占用量隨之降低,節(jié)省APP運(yùn)行時(shí)的耗電量,提高用戶體驗(yàn)。進(jìn)一步地本發(fā)明又在合適的時(shí)機(jī),及時(shí)恢復(fù)OpenGL View的繪制幀率,以保證OpenGL View的畫面質(zhì)量滿足用戶的視覺體驗(yàn)要求。
與上述方法相對(duì)應(yīng)的,本發(fā)明提供了一種基于OpenGL的控制裝置。
參閱圖3,圖3為本發(fā)明提供的一種基于OpenGL View的控制裝置的結(jié)構(gòu)圖,如圖3所示,本實(shí)施例的裝置可以包括:
監(jiān)控單元301,用于監(jiān)控是否發(fā)生視圖變動(dòng)操作;若是,觸發(fā)判斷單元;
判斷單元302,用于判斷OpenGL View是否被非OpenGL View覆蓋;所述非OpenGL View是指終端操作系統(tǒng)自定義的界面;若是,觸發(fā)降低單元;
降低單元303,用于降低所述OpenGL View的繪制幀率。
可選的,所述降低單元,具體用于將所述OpenGL View的繪制幀率降低至預(yù)置的繪制幀率閾值,所述預(yù)置的繪制幀率閾值小于所述繪制幀率。
可選的,當(dāng)所述判斷單元判斷出所述OpenGL View是被所述非OpenGL View部分覆蓋,則所述裝置還包括:
識(shí)別單元,用于識(shí)別所述OpenGL View是否為用戶不可操作的界面,若是,則觸發(fā)所述降低單元將所述OpenGL View的繪制幀率降低至預(yù)置的繪制幀率閾值。
可選的,所述判斷單元,包括:
獲取子單元,用于獲取非OpenGL View繪制區(qū)域的坐標(biāo)值和OpenGL View繪制區(qū)域的坐標(biāo)值;
比較子單元,用于通過坐標(biāo)值大小關(guān)系判斷所述非OpenGL View繪制區(qū)域與所述OpenGL View的繪制區(qū)域是否存在重疊部分,若是,表明所述OpenGL View被所述非OpenGL View覆蓋,否則,表明所述OpenGL View未被所述非OpenGL View覆蓋。
另外,本發(fā)明還提供了一種終端,該終端APP和上文描述基于OpenGL View的控制裝置;所述APP基于OpenGL View和終端操作系統(tǒng)自定義的界面實(shí)現(xiàn)畫面展示功能;所述APP通過所述基于OpenGL View的控制裝置實(shí)現(xiàn)對(duì)OpenGL View的繪制。
這里需要說明的是,在實(shí)際應(yīng)用中本發(fā)明提供的終端的硬件結(jié)構(gòu)可以如手機(jī)、平板、計(jì)算機(jī)、筆記本等設(shè)備的硬件結(jié)構(gòu),該終端可以裝載APP,支持APP實(shí)現(xiàn)相應(yīng)功能。
現(xiàn)以手機(jī)為一個(gè)例子進(jìn)行具體的說明。該手機(jī)包括存儲(chǔ)器、中央處理器(CentralProcessingUnit,以下簡稱CPU)、外設(shè)接口、RF電路、音頻電路、揚(yáng)聲器、電源管理芯片、輸入/輸出(I/O)子系統(tǒng)、其他輸入/控制設(shè)備,這些部件通過一個(gè)或多個(gè)通信總線或信號(hào)線來通信。在本發(fā)明實(shí)施例中,存儲(chǔ)器中存儲(chǔ)軟件部件,可包括操作系統(tǒng)、APP、基于OpenGL的控制裝置,這些都是以軟件形式存在與手機(jī)中。這樣,APP可以利用基于OpenGL的控制裝置實(shí)現(xiàn)對(duì)OpenGL View的繪制,在不影響APP畫面質(zhì)量的情況下,減小APP的耗電量,提高用戶使用體驗(yàn)。
應(yīng)該理解的是,上述手機(jī)僅僅是移動(dòng)終端的一個(gè)范例,并且手機(jī)可以具有上述所描述的更過的或者更少的部件,可以組合兩個(gè)或更多的部件,或者可以具有不同的部件配置。各種部件可以在包括一個(gè)或多個(gè)信號(hào)處理和/或?qū)S眉呻娐吩趦?nèi)的硬件、軟件、或硬件和軟件的組合中實(shí)現(xiàn)。
本領(lǐng)域的技術(shù)人員可以清楚地了解到,為了描述的方便和簡潔,上述描述裝置具體工作過程,可以參考前述方法實(shí)施例中的對(duì)應(yīng)過程,在此不再贅述。
在本發(fā)明所提供的幾個(gè)實(shí)施例中,應(yīng)該理解到,所揭露的裝置和方法,可以通過其它的方式實(shí)現(xiàn)。例如,以上所描述到的裝置實(shí)施例僅僅是示意性的,例如,所述單元的劃分,僅僅為一種邏輯功能劃分,實(shí)際實(shí)現(xiàn)時(shí)可以有 另外的劃分方式,例如多個(gè)單元或組件可以結(jié)合或可以集成到另一個(gè)系統(tǒng),或一些特征可以忽略,或不執(zhí)行。另一點(diǎn),所顯示或討論的相互之間的耦合或直接耦合或通信連接可以是通過一些接口,裝置或單元的間接耦合或通信連接,可以是電性、機(jī)械或其它的形式。
所述作為分離部件說明的單元可以是或者也可以是物理上分開的,作為單元顯示的部件可以是或者也可以不是物理單元,即可以位于一個(gè)地方,或者也可以分布到多個(gè)網(wǎng)絡(luò)單元上。可以根據(jù)實(shí)際的需要選擇其中的部分或者全部單元來實(shí)現(xiàn)本實(shí)施例方案的目的。
另外,在本發(fā)明各個(gè)實(shí)施例中的各功能單元可以集成在一個(gè)處理單元中,也可以是各個(gè)單元單獨(dú)物理存在,也可以兩個(gè)或兩個(gè)以上單元集成在一個(gè)單元中。上述集成的單元既可以采用硬件的形式實(shí)現(xiàn),可以采用軟件功能單元的形式實(shí)現(xiàn)。
需要說明的是,本領(lǐng)域普通技術(shù)人員可以理解實(shí)現(xiàn)上述實(shí)施例方法中的全部或部分流程,是可以通過計(jì)算機(jī)程序來指令相關(guān)的硬件來完成,所述的程序可存儲(chǔ)于一計(jì)算機(jī)可讀取存儲(chǔ)介質(zhì)中,該程序在執(zhí)行時(shí),可包括如上述各方法的實(shí)施例的流程。其中,所述的存儲(chǔ)介質(zhì)可為磁碟、光盤、只讀存儲(chǔ)記憶體(Read-Only Memory,ROM)或隨機(jī)存儲(chǔ)記憶體(Random Access Memory,RAM)等。
以上對(duì)本發(fā)明所提供的一種基于OpenGL View的控制方法、裝置及終端進(jìn)行了詳細(xì)介紹,本文中應(yīng)用了具體實(shí)施例對(duì)本發(fā)明的原理及實(shí)施方式進(jìn)行了闡述,以上實(shí)施例的說明只是用于幫助理解本發(fā)明的方法及其核心思想;同時(shí),對(duì)于本領(lǐng)域的一般技術(shù)人員,依據(jù)本發(fā)明的思想,在具體實(shí)施方式及應(yīng)用范圍上均會(huì)有改變之處,綜上所述,本說明書內(nèi)容不應(yīng)理解為對(duì)本發(fā)明的限制。