一種基于OpenGL的局部刷新方法及系統(tǒng)的制作方法
【專利摘要】本發(fā)明公開一種基于OpenGL的局部刷新方法及系統(tǒng),其中,包括步驟:A、初始化OpenGL引擎環(huán)境,準(zhǔn)備渲染數(shù)據(jù);B、統(tǒng)計當(dāng)前幀渲染時狀態(tài)有改變的節(jié)點;C、計算所有狀態(tài)有改變的節(jié)點產(chǎn)生的刷新區(qū)域;D、計算刷新區(qū)域?qū)?yīng)到屏幕上的屏幕區(qū)域;E、根據(jù)所述屏幕區(qū)域設(shè)置投影矩陣以及設(shè)置視口和裁剪區(qū)域;F、將步驟E得到的模型數(shù)據(jù)和紋理數(shù)據(jù)提交到渲染器進(jìn)行渲染。本發(fā)明通過采用局部刷新方法,只對狀態(tài)有改變的節(jié)點所在的區(qū)域進(jìn)行刷新,在OpenGL的引擎上實現(xiàn)了屏幕的局部刷新技術(shù),提高了刷新效率,平均幀率比整屏刷新幀率至少提升一倍。
【專利說明】
一種基于OpenGL的局部刷新方法及系統(tǒng)
技術(shù)領(lǐng)域
[0001]本發(fā)明涉及顯示領(lǐng)域,尤其涉及一種基于OpenGL的局部刷新方法及系統(tǒng)?!颈尘凹夹g(shù)】
[0002]OpenGL作為最著名的圖形程序接口之一,已被各大平臺廣泛的支持。幾乎所有的圖形學(xué)引擎(鬼火、cocos2d等)都會實現(xiàn)OpenGL的植染。
[0003]傳統(tǒng)引擎的刷新都是屏幕整體刷新。但是在某些產(chǎn)品中,特別是一些非游戲類的應(yīng)用產(chǎn)品,某個時間階段,屏幕上大部分區(qū)域顯示畫面是不變的,所以持續(xù)整屏刷新就會造成系統(tǒng)資源的浪費,這導(dǎo)致刷新效率變低,且占用系統(tǒng)資源多。
[0004]因此,現(xiàn)有技術(shù)還有待于改進(jìn)和發(fā)展。
【發(fā)明內(nèi)容】
[0005]鑒于上述現(xiàn)有技術(shù)的不足,本發(fā)明的目的在于提供一種基于OpenGL的局部刷新方法及系統(tǒng),旨在解決現(xiàn)有的圖像刷新方法刷新效率低、占用資源多的問題。
[0006]本發(fā)明的技術(shù)方案如下:一種基于OpenGL的局部刷新方法,其中,包括步驟:A、初始化OpenGL引擎環(huán)境,準(zhǔn)備渲染數(shù)據(jù);B、統(tǒng)計當(dāng)前幀渲染時狀態(tài)有改變的節(jié)點;C、計算所有狀態(tài)有改變的節(jié)點產(chǎn)生的刷新區(qū)域;D、計算刷新區(qū)域?qū)?yīng)到屏幕上的屏幕區(qū)域;E、根據(jù)所述屏幕區(qū)域設(shè)置投影矩陣以及設(shè)置視口和裁剪區(qū)域;F、將步驟E得到的模型數(shù)據(jù)和紋理數(shù)據(jù)提交到渲染器進(jìn)行渲染。
[0007]所述的基于OpenGL的局部刷新方法,其中,所述步驟A具體包括:A1、解析輸入的模型文件和紋理文件,創(chuàng)建渲染節(jié)點和渲染紋理;A2、創(chuàng)建OpenGL上下文,設(shè)置視口矩陣及投影矩陣;并記錄視口矩陣及投影矩陣的初始值;A3、用記錄的初始值初始化視口矩陣及投影矩陣。
[0008]所述的基于OpenGL的局部刷新方法,其中,所述步驟B具體包括:B1、創(chuàng)建節(jié)點容器;B2、檢測當(dāng)前幀節(jié)點的位置、旋轉(zhuǎn)、縮放、紋理或紋理矩陣是否有變化,若有變化則將相應(yīng)節(jié)點放入到節(jié)點容器中。
[0009]所述的基于OpenGL的局部刷新方法,其中,所述步驟C具體包括:C1、創(chuàng)建矩形容器;C2、遍歷節(jié)點容器中所有的節(jié)點,獲取節(jié)點的立方體包圍盒;C3、記錄節(jié)點的xoy面,并保存在矩形容器中。
[0010]所述的基于OpenGL的局部刷新方法,其中,所述步驟D具體包括:D1、遍歷矩形容器,根據(jù)3D轉(zhuǎn)2D公式,將矩形容器中的所有xoy面轉(zhuǎn)換到正投影坐標(biāo)系中得到若干矩形對象;D2、用一個大矩形將所有矩形對象包裹在其中;D3、銷毀矩形容器;D4、將計算出的大矩形進(jìn)行視口轉(zhuǎn)換,得到對應(yīng)屏幕上的屏幕區(qū)域。
[0011] 所述的基于OpenGL的局部刷新方法,其中,所述步驟D4中,如果屏幕區(qū)域超出屏幕范圍,則對屏幕區(qū)域進(jìn)行調(diào)整,使之處于屏幕范圍之內(nèi)。
[0012]—種基于OpenGL的局部刷新系統(tǒng),其中,包括:初始化模塊,用于初始化OpenGL引擎環(huán)境,準(zhǔn)備渲染數(shù)據(jù);節(jié)點統(tǒng)計模塊,用于統(tǒng)計當(dāng)前幀渲染時狀態(tài)有改變的節(jié)點;刷新區(qū)域計算模塊,用于計算所有狀態(tài)有改變的節(jié)點產(chǎn)生的刷新區(qū)域;屏幕區(qū)域計算模塊,用于計算刷新區(qū)域?qū)?yīng)到屏幕上的屏幕區(qū)域;設(shè)置模塊,用于根據(jù)所述屏幕區(qū)域設(shè)置投影矩陣以及設(shè)置視口和裁剪區(qū)域;渲染模塊,用于將得到的模型數(shù)據(jù)和紋理數(shù)據(jù)提交到渲染器進(jìn)行渲染。[〇〇13] 所述的基于OpenGL的局部刷新系統(tǒng),其中,所述節(jié)點統(tǒng)計模塊具體包括:節(jié)點容器創(chuàng)建單元,用于創(chuàng)建節(jié)點容器;變化檢測單元,用于檢測當(dāng)前幀節(jié)點的位置、旋轉(zhuǎn)、縮放、紋理或紋理矩陣是否有變化, 若有變化則將相應(yīng)節(jié)點放入到節(jié)點容器中。
[0014] 所述的基于OpenGL的局部刷新系統(tǒng),其中,所述刷新區(qū)域計算模塊具體包括: 矩形容器單元,用于創(chuàng)建矩形容器;立方體包圍盒獲取單元,用于遍歷節(jié)點容器中所有的節(jié)點,獲取節(jié)點的立方體包圍盒;記錄單元,用于記錄節(jié)點的xoy面,并保存在矩形容器中。
[0015] 所述的基于OpenGL的局部刷新系統(tǒng),其中,所述屏幕區(qū)域計算模塊具體包括:轉(zhuǎn)換單元,用于遍歷矩形容器,根據(jù)3D轉(zhuǎn)2D公式,將矩形容器中的所有xoy面轉(zhuǎn)換到正投影坐標(biāo)系中得到若干矩形對象;包裹單元,用于用一個大矩形將所有矩形對象包裹在其中;銷毀單元,用于銷毀矩形容器;屏幕區(qū)域獲取單元,用于將計算出的大矩形進(jìn)行視口轉(zhuǎn)換,得到對應(yīng)屏幕上的屏幕區(qū)域。
[0016] 有益效果:本發(fā)明通過采用局部刷新方法,只對狀態(tài)有改變的節(jié)點所在的區(qū)域進(jìn)行刷新,在OpenGL的引擎上實現(xiàn)了屏幕的局部刷新技術(shù),提高了刷新效率,平均幀率比整屏刷新幀率至少提升一倍?!靖綀D說明】
[0017]圖1為本發(fā)明一種基于OpenGL的局部刷新方法較佳實施例的流程圖。
[0018]圖2為圖1所示方法中步驟S101的具體流程圖。
[0019]圖3為圖1所示方法中步驟S102的具體流程圖。
[0020]圖4為圖1所示方法中步驟S103的具體流程圖。
[0021]圖5為本發(fā)明中立方體包圍盒的結(jié)構(gòu)示意圖。
[0022]圖6為圖1所示方法中步驟S104的具體流程圖。
[0023]圖7為本發(fā)明中大矩形的結(jié)構(gòu)示意圖。
[0024]圖8為本發(fā)明一種基于OpenGL的局部刷新系統(tǒng)較佳實施例的結(jié)構(gòu)框圖。
[0025]圖9為圖8所示系統(tǒng)中節(jié)點統(tǒng)計模塊的具體結(jié)構(gòu)框圖。
[0026]圖10為圖8所示系統(tǒng)中刷新區(qū)域計算模塊的具體結(jié)構(gòu)框圖。
[0027]圖11為圖8所示系統(tǒng)中屏幕區(qū)域計算模塊的具體結(jié)構(gòu)框圖。【具體實施方式】
[0028]本發(fā)明提供一種基于OpenGL的局部刷新方法及系統(tǒng),為使本發(fā)明的目的、技術(shù)方案及效果更加清楚、明確,以下對本發(fā)明進(jìn)一步詳細(xì)說明。應(yīng)當(dāng)理解,此處所描述的具體實施例僅僅用以解釋本發(fā)明,并不用于限定本發(fā)明。
[0029]請參閱圖1,圖1為本發(fā)明一種基于OpenGL的局部刷新方法較佳實施例的流程圖, 如圖所示,其包括步驟:5101、初始化OpenGL引擎環(huán)境,準(zhǔn)備渲染數(shù)據(jù);5102、統(tǒng)計當(dāng)前幀渲染時,狀態(tài)有改變的節(jié)點;5103、計算所有狀態(tài)有改變的節(jié)點產(chǎn)生的刷新區(qū)域;5104、計算刷新區(qū)域?qū)?yīng)到屏幕上的屏幕區(qū)域;5105、根據(jù)所述屏幕區(qū)域設(shè)置投影矩陣以及設(shè)置視口和裁剪區(qū)域;5106、將步驟S105得到的模型數(shù)據(jù)和紋理數(shù)據(jù)提交到渲染器進(jìn)行渲染。
[0030]相對于屏幕整體刷新技術(shù),本發(fā)明所采用的局部刷新方法,通過只對節(jié)點狀態(tài)變化的區(qū)域進(jìn)行刷新,所以節(jié)省了系統(tǒng)資源,同時也提高了刷新效率,平均幀率比整屏幀率提升一倍以上。
[0031]具體來說,如圖2所示,所述步驟S101具體包括:5201、解析輸入的模型文件和紋理文件,創(chuàng)建渲染節(jié)點和渲染紋理;5202、創(chuàng)建OpenGL上下文,設(shè)置視口矩陣及投影矩陣;并記錄視口矩陣及投影矩陣的初始值;具體可根據(jù)平臺創(chuàng)建OpenGL上下文。
[0032]S203、用記錄的初始值初始化視口矩陣及投影矩陣。
[0033]在透視投影的情況下,OpenGL有兩個接口可以設(shè)置投影矩陣:glPerspective和 glFrustum (均為投影變換函數(shù))。因為glPerspective只能設(shè)置對稱視景體,所以采用 glFrustum設(shè)置投影矩陣。
[0034]進(jìn)一步,如圖3所示,所述步驟S102具體包括:5301、創(chuàng)建節(jié)點容器v ;5302、檢測當(dāng)前幀節(jié)點的位置、旋轉(zhuǎn)、縮放、紋理、紋理矩陣是否有變化,若有變化則放入到節(jié)點容器v中;如果OpenGL的渲染環(huán)境,例如視口矩陣、燈光、霧化等影響渲染效果的設(shè)置有所變化, 那么會釋放所創(chuàng)建的節(jié)點容器v,然后直接進(jìn)行全屏刷新,因為OpenGL的渲染環(huán)境發(fā)生變化,那么將使整屏都有所變化,所以放棄本發(fā)明的局部刷新方法,而采用傳統(tǒng)的全屏刷新方式。
[0035]進(jìn)一步,如圖4所示,所述步驟S103具體包括:S401、創(chuàng)建矩形容器r ;其中的矩形容器也稱Rect容器,例如存放一個矩形的左上角坐標(biāo)、寬度和高度。
[0036]S402、遍歷節(jié)點容器v中所有的節(jié)點,獲取節(jié)點的立方體包圍盒;如圖5所示,該立方體包圍盒也稱AABB包圍盒,將所有節(jié)點包圍。
[0037]AABB包圍盒為六面體,每一邊都平行于一個坐標(biāo)平面,其目的是用體積稍大且特性簡單的幾何體來近似地代替復(fù)雜的幾何對象。
[0038]S403、記錄節(jié)點的xoy面,將其保存在矩形容器r中。
[0039]獲得立方體包圍盒后,可記錄節(jié)點的xoy面,然后保存在所述矩形容器中。
[0040]當(dāng)然,上述情況是針對節(jié)點容器中有節(jié)點的情況,若節(jié)點容器中的節(jié)點數(shù)量為0, 那么則銷毀矩形容器,然后再返回步驟S203進(jìn)行初始化,進(jìn)行下一次渲染。
[0041]進(jìn)一步,如圖6所示,所述步驟S104具體包括:S501、遍歷矩形容器,根據(jù)3D轉(zhuǎn)2D公式,將矩形容器中的所有xoy面轉(zhuǎn)換到正投影坐標(biāo)系中得到若干矩形對象;根據(jù)3D轉(zhuǎn)2D公式,頂點相對矩陣一〉模型視圖矩陣變換一〉投影矩陣變換,將矩形容器r中所有的對象轉(zhuǎn)化到正投影坐標(biāo)系中。用公式表示如下:P * V * rect,其中,P為投影矩陣,V為視口矩陣,rect即為矩形容器中所保存對象。
[0042]S502、用一個大矩形將所有矩形包裹在其中;如圖7所示,采用一個大矩形將得到的所有矩形包裹在其中。
[0043]S503、銷毀矩形容器;S504、將計算出的大矩形進(jìn)行視口轉(zhuǎn)換,得到對應(yīng)屏幕上的屏幕區(qū)域sRect。
[0044]S504中,如果屏幕區(qū)域sRect的值超出屏幕范圍(sRect左上角X坐標(biāo)小于0或右上角X坐標(biāo)大于屏幕寬,或者左上角Y坐標(biāo)大于屏幕高或左下角Y坐標(biāo)小于0),則對sRect 進(jìn)行調(diào)整,例如調(diào)小sRect的大小,使之處于屏幕范圍之內(nèi)。
[0045]所述步驟S105中,設(shè)置投影矩陣的公式包括:float L = sRect.UpperLeftCorner.X / (float)ScreenSize.Width; float R = sRect.LowerRightCorner.X / (float)ScreenSize.Width; float B = sRect.UpperLeftCorner.Y / (float)ScreenSize.Height; float T = sRect.LowerRightCorner.Y / (float)ScreenSize.Height; float rl = Right - Left; float tb = Top - Bottom;Right = R*rl + Left;Left = L*rl + Left;Top = T*tb + Bottom;Bottom = B*tb + Bottom;glFrustumf(Left, Right, Bottom, Top, Near, Far);其中,sRect.UpperLeftCorner.X 為 sRect 左上角 X 坐標(biāo); sRect.LowerRightCorner.X 為 sRect 右下角 X 坐標(biāo);sRect.UpperLeftCorner.Y 為 sRect 左上角 Y 坐標(biāo); sRect.LowerRightCorner.Y 為 sRect 右下角 Y 坐標(biāo);ScreenSize.Width 為屏幕的寬;ScreenSize.Height 為屏幕的高;Left、Right、Bottom、Top、Near、Far 為步驟 S101 中用 glFrustumf 初始化時保存的值, 即設(shè)置初始化投影矩陣的值。
[0046]設(shè)置視口和裁剪區(qū)域的公式包括:視口設(shè)置:glViewport (sRect.LowerLeftCorner.X, sRect.LowerLeftCorner.Y, sRect.Width, sRect.Height );剪裁區(qū)域設(shè)置: glEnable(GL_SCISSOR_TEST);glScissor (sRect.LowerLeftCorner.X, sRect.LowerLeftCorner.Y, sRect.Width, sRect.Height );其中:sRect.LowerLeftCorner.X 為 sRect 左下角 X 坐標(biāo) sRect.LowerLeftCorner.Y 為 sRect 左下角 Y 坐標(biāo) sRect.Width 為 sRect 的寬 sRect.Height 為 sRect 的高最后提交上述的設(shè)置,即模型數(shù)據(jù)和紋理數(shù)據(jù)到渲染器進(jìn)行渲染即可。
[0047]本發(fā)明所提供的局部刷新方法,特別適合于一些非游戲類的應(yīng)用產(chǎn)品,即在某個時間段,屏幕上大部分區(qū)域的顯示畫面是不變的,采用本發(fā)明的局部刷新方法,可節(jié)省大量系統(tǒng)資源,避免頻繁全屏刷新,提高了刷新效率,平均幀率相對于整屏刷新幀率至少提升一倍。
[0048]基于上述方法,本發(fā)明還提供一種基于OpenGL的局部刷新系統(tǒng),如圖8所示,其包括:初始化模塊100,用于初始化OpenGL引擎環(huán)境,準(zhǔn)備渲染數(shù)據(jù);節(jié)點統(tǒng)計模塊200,用于統(tǒng)計當(dāng)前幀渲染時狀態(tài)有改變的節(jié)點;刷新區(qū)域計算模塊300,用于計算所有狀態(tài)有改變的節(jié)點產(chǎn)生的刷新區(qū)域;屏幕區(qū)域計算模塊400,用于計算刷新區(qū)域?qū)?yīng)到屏幕上的屏幕區(qū)域;設(shè)置模塊500,用于根據(jù)所述屏幕區(qū)域設(shè)置投影矩陣以及設(shè)置視口和裁剪區(qū)域;渲染模塊600,用于將得到的模型數(shù)據(jù)和紋理數(shù)據(jù)提交到渲染器進(jìn)行渲染。
[0049]進(jìn)一步,如圖9所示,所述節(jié)點統(tǒng)計模塊200具體包括:節(jié)點容器創(chuàng)建單元,用于創(chuàng)建節(jié)點容器;變化檢測單元,用于檢測當(dāng)前幀節(jié)點的位置、旋轉(zhuǎn)、縮放、紋理或紋理矩陣是否有變化, 若有變化則將相應(yīng)節(jié)點放入到節(jié)點容器中。
[0050]進(jìn)一步,如圖10所示,所述刷新區(qū)域計算模塊300具體包括:矩形容器單元,用于創(chuàng)建矩形容器;立方體包圍盒獲取單元,用于遍歷節(jié)點容器中所有的節(jié)點,獲取節(jié)點的立方體包圍盒;記錄單元,用于記錄節(jié)點的xoy面,并保存在矩形容器中。
[0051]進(jìn)一步,如圖11所示,所述屏幕區(qū)域計算模塊400具體包括:轉(zhuǎn)換單元410,用于遍歷矩形容器,根據(jù)3D轉(zhuǎn)2D公式,將矩形容器中的所有xoy面轉(zhuǎn)換到正投影坐標(biāo)系中得到若干矩形對象;包裹單元420,用于用一個大矩形將所有矩形對象包裹在其中;銷毀單元430,用于銷毀矩形容器;屏幕區(qū)域獲取單元440,用于將計算出的大矩形進(jìn)行視口轉(zhuǎn)換,得到對應(yīng)屏幕上的屏幕區(qū)域。
[0052]應(yīng)當(dāng)理解的是,本發(fā)明的應(yīng)用不限于上述的舉例,對本領(lǐng)域普通技術(shù)人員來說,可以根據(jù)上述說明加以改進(jìn)或變換,所有這些改進(jìn)和變換都應(yīng)屬于本發(fā)明所附權(quán)利要求的保護(hù)范圍。
【主權(quán)項】
1.一種基于OpenGL的局部刷新方法,其特征在于,包括步驟:A、初始化OpenGL引擎環(huán)境,準(zhǔn)備渲染數(shù)據(jù);B、統(tǒng)計當(dāng)前幀渲染時狀態(tài)有改變的節(jié)點;C、計算所有狀態(tài)有改變的節(jié)點產(chǎn)生的刷新區(qū)域;D、計算刷新區(qū)域?qū)?yīng)到屏幕上的屏幕區(qū)域;E、根據(jù)所述屏幕區(qū)域設(shè)置投影矩陣以及設(shè)置視口和裁剪區(qū)域;F、將步驟E得到的模型數(shù)據(jù)和紋理數(shù)據(jù)提交到渲染器進(jìn)行渲染。2.根據(jù)權(quán)利要求1所述的基于OpenGL的局部刷新方法,其特征在于,所述步驟A具體 包括:A1、解析輸入的模型文件和紋理文件,創(chuàng)建渲染節(jié)點和渲染紋理;A2、創(chuàng)建OpenGL上下文,設(shè)置視口矩陣及投影矩陣;并記錄視口矩陣及投影矩陣的初 始值;A3、用記錄的初始值初始化視口矩陣及投影矩陣。3.根據(jù)權(quán)利要求1所述的基于OpenGL的局部刷新方法,其特征在于,所述步驟B具體 包括:B1、創(chuàng)建節(jié)點容器;B2、檢測當(dāng)前幀節(jié)點的位置、旋轉(zhuǎn)、縮放、紋理或紋理矩陣是否有變化,若有變化則將相 應(yīng)節(jié)點放入到節(jié)點容器中。4.根據(jù)權(quán)利要求3所述的基于OpenGL的局部刷新方法,其特征在于,所述步驟C具體 包括:C1、創(chuàng)建矩形容器;C2、遍歷節(jié)點容器中所有的節(jié)點,獲取節(jié)點的立方體包圍盒;C3、記錄節(jié)點的xoy面,并保存在矩形容器中。5.根據(jù)權(quán)利要求4所述的基于OpenGL的局部刷新方法,其特征在于,所述步驟D具體 包括:D1、遍歷矩形容器,根據(jù)3D轉(zhuǎn)2D公式,將矩形容器中的所有xoy面轉(zhuǎn)換到正投影坐標(biāo) 系中得到若干矩形對象;D2、用一個大矩形將所有矩形對象包裹在其中;D3、銷毀矩形容器;D4、將計算出的大矩形進(jìn)行視口轉(zhuǎn)換,得到對應(yīng)屏幕上的屏幕區(qū)域。6.根據(jù)權(quán)利要求5所述的基于OpenGL的局部刷新方法,其特征在于,所述步驟D4中, 如果屏幕區(qū)域超出屏幕范圍,則對屏幕區(qū)域進(jìn)行調(diào)整,使之處于屏幕范圍之內(nèi)。7.—種基于OpenGL的局部刷新系統(tǒng),其特征在于,包括:初始化模塊,用于初始化OpenGL引擎環(huán)境,準(zhǔn)備渲染數(shù)據(jù);節(jié)點統(tǒng)計模塊,用于統(tǒng)計當(dāng)前幀渲染時狀態(tài)有改變的節(jié)點;刷新區(qū)域計算模塊,用于計算所有狀態(tài)有改變的節(jié)點產(chǎn)生的刷新區(qū)域;屏幕區(qū)域計算模塊,用于計算刷新區(qū)域?qū)?yīng)到屏幕上的屏幕區(qū)域;設(shè)置模塊,用于根據(jù)所述屏幕區(qū)域設(shè)置投影矩陣以及設(shè)置視口和裁剪區(qū)域;渲染模塊,用于將得到的模型數(shù)據(jù)和紋理數(shù)據(jù)提交到渲染器進(jìn)行渲染。8.根據(jù)權(quán)利要求7所述的基于OpenGL的局部刷新系統(tǒng),其特征在于,所述節(jié)點統(tǒng)計模 塊具體包括:節(jié)點容器創(chuàng)建單元,用于創(chuàng)建節(jié)點容器;變化檢測單元,用于檢測當(dāng)前幀節(jié)點的位置、旋轉(zhuǎn)、縮放、紋理或紋理矩陣是否有變化, 若有變化則將相應(yīng)節(jié)點放入到節(jié)點容器中。9.根據(jù)權(quán)利要求8所述的基于OpenGL的局部刷新系統(tǒng),其特征在于,所述刷新區(qū)域計 算模塊具體包括:矩形容器單元,用于創(chuàng)建矩形容器;立方體包圍盒獲取單元,用于遍歷節(jié)點容器中所有的節(jié)點,獲取節(jié)點的立方體包圍 盒;記錄單元,用于記錄節(jié)點的xoy面,并保存在矩形容器中。10.根據(jù)權(quán)利要求9所述的基于OpenGL的局部刷新系統(tǒng),其特征在于,所述屏幕區(qū)域計 算模塊具體包括:轉(zhuǎn)換單元,用于遍歷矩形容器,根據(jù)3D轉(zhuǎn)2D公式,將矩形容器中的所有xoy面轉(zhuǎn)換到 正投影坐標(biāo)系中得到若干矩形對象;包裹單元,用于用一個大矩形將所有矩形對象包裹在其中;銷毀單元,用于銷毀矩形容器;屏幕區(qū)域獲取單元,用于將計算出的大矩形進(jìn)行視口轉(zhuǎn)換,得到對應(yīng)屏幕上的屏幕區(qū) 域。
【文檔編號】G06T1/00GK105989568SQ201510055198
【公開日】2016年10月5日
【申請日】2015年2月3日
【發(fā)明人】秦龍龍, 盧偉超
【申請人】Tcl集團(tuán)股份有限公司