在嵌入式Linux平臺(tái)下基于Qt的混合界面的實(shí)現(xiàn)方法
【技術(shù)領(lǐng)域】
[0001]本發(fā)明涉及一種界面實(shí)現(xiàn)方法,尤其涉及一種在嵌入式Linux平臺(tái)下基于Qt的混合界面的實(shí)現(xiàn)方法。
【背景技術(shù)】
[0002]嵌入式LINUX是以LINUX為基礎(chǔ)的嵌入式操作系統(tǒng),它被廣泛應(yīng)用在移動(dòng)電話、個(gè)人數(shù)字助理(PDA)、媒體播放器、消費(fèi)性電子產(chǎn)品以及航空航天等領(lǐng)域中。
[0003]QT是一個(gè)跨平臺(tái)的應(yīng)用程序框架。通過(guò)使用QT,可以一次性開(kāi)發(fā)應(yīng)用程序和用戶界面,然后將其部署到多個(gè)桌面和嵌入式操作系統(tǒng)中,而無(wú)需重復(fù)編寫(xiě)源代碼。QT/EMBEDDED LINUX是為嵌入式LINUX優(yōu)化過(guò)的QT版本,可以運(yùn)行在LINUX的任何硬件上運(yùn)行-包括 INTEL X86、MIPS、ARM、STRONG-ARM、M0T0R0LA/FREESCALE68000,以及 POWERPC體系。
[0004]QT/EMBEDDED LINUX直接在LINUX的幀緩存中繪圖。由于QT框架的約束,通常情況下,開(kāi)發(fā)的界面程序只可實(shí)現(xiàn)2D界面。在嵌入式LINUX平臺(tái)下基于QT實(shí)現(xiàn)3D特效,是極為有意義的。
【發(fā)明內(nèi)容】
[0005]針對(duì)現(xiàn)有技術(shù)存在的問(wèn)題,本發(fā)明的目的是提供一種能夠?qū)崿F(xiàn)3D界面的混合界面的實(shí)現(xiàn)方法。
[0006]本發(fā)明的技術(shù)方案包括:一種在嵌入式Linux平臺(tái)下基于Qt的混合界面的實(shí)現(xiàn)方法,所述方法包括以下步驟:a.通過(guò)設(shè)定QWS_DISPLAY來(lái)指定Qt程序界面顯示的幀緩存,所述幀緩存包括第一幀緩存和第二幀緩存;b.將2D元素輸出至第一幀緩存;c.將3D元素輸出至第二幀緩存;d.同步刷新第一幀緩存和第二幀緩存的顯示。
[0007]優(yōu)選地,第一幀緩存的大小為X*Y像素。
[0008]優(yōu)選地,第二幀緩存的大小為2Χ*Υ像素。
[0009]優(yōu)選地,當(dāng)將第二幀緩沖置于頂層,覆在第一幀緩沖之上時(shí),顯示界面為純3D界面;當(dāng)去除第一幀緩沖中的應(yīng)用程序窗體透明屬性,并且禁用顯示芯片默認(rèn)透明色填充窗體時(shí),顯示界面為純2D界面。
[0010]優(yōu)選地,步驟d包括:第一幀緩存由qws實(shí)時(shí)繪制,第二幀緩存由第三方程序繪制,且同步顯示。
[0011 ] 優(yōu)選地,第二幀緩存為水平顯示或豎直顯示方式。
[0012]優(yōu)選地,第一幀緩存和第二幀緩存均為實(shí)現(xiàn)線性數(shù)據(jù)存儲(chǔ)的連續(xù)內(nèi)存空間。
[0013]本發(fā)明提供的在嵌入式Linux平臺(tái)下基于Qt的混合界面的實(shí)現(xiàn)方法能夠利用多幀緩沖,造成視覺(jué)印象疊加的效果。
【附圖說(shuō)明】
[0014]圖1是本發(fā)明一種優(yōu)選實(shí)施方式的在嵌入式Linux平臺(tái)下基于Qt的混合界面的實(shí)現(xiàn)方法的流程圖。
【具體實(shí)施方式】
[0015]為使本發(fā)明實(shí)施例的目的、技術(shù)方案和有點(diǎn)更加清楚,下面將結(jié)合附圖對(duì)本發(fā)明實(shí)施例的技術(shù)方案作進(jìn)一步說(shuō)明。
[0016]如圖1所示,本發(fā)明一種優(yōu)選實(shí)施方式的在嵌入式Linux平臺(tái)下基于Qt的混合界面的實(shí)現(xiàn)方法包括以下步驟:
[0017]在步驟110,通過(guò)設(shè)定QWS_DISPLAY來(lái)指定Qt程序界面顯示的幀緩存,所述幀緩存包括第一幀緩存和第二幀緩存。
[0018]在嵌入式Linux系統(tǒng)中,需要指定第一個(gè)啟動(dòng)的Qt/Embedded Linux開(kāi)發(fā)應(yīng)用程序?yàn)镼WS方式啟動(dòng)。在此之前,通過(guò)設(shè)定QWS_DISPLAY來(lái)指定Qt程序界面顯示的幀緩存。其中,本領(lǐng)域技術(shù)人員可以知悉,Qt是一個(gè)跨平臺(tái)C++圖形用戶界面應(yīng)用程序框架,它提供給應(yīng)用程序開(kāi)發(fā)者建立圖形用戶界面所需的所有功能。QWS的全稱(chēng)是Qt windows system,是QT的窗口系統(tǒng),體系結(jié)構(gòu)類(lèi)似X Windows,QWS為C/S結(jié)構(gòu)。QWS_DISPLAY是Qt中的環(huán)境變量,qws啟動(dòng)時(shí),會(huì)去檢測(cè)QWS_DISPLAY這個(gè)環(huán)境變量。
[0019]在步驟120,將2D元素輸出至第一幀緩存。在步驟130,將3D元素輸出至第二幀緩存。
[0020]用Qt開(kāi)發(fā)整體界面框架將所有2D元素指定顯示輸出至第一幀緩存,將3D元素輸出至第二幀緩存。
[0021]在一個(gè)實(shí)施例中,通過(guò)1ctl控制將第一幀緩存覆在第二幀緩存之上,同時(shí)利用幀緩存的透明特性,實(shí)現(xiàn)2D&3D圖像共存的特效,而且能夠?qū)崿F(xiàn)3D界面、2D界面之間的平滑切換。1ctl是Qt中控制I/O設(shè)備的函數(shù),用于獲得設(shè)備信息和向設(shè)備發(fā)送控制參數(shù)。
[0022]具體地,在一個(gè)實(shí)施例中,可以采用例如控制層級(jí)關(guān)系的語(yǔ)句:1ctl(fd,TCC_LCD_FB_10CTL_SET_0VP, 3),向設(shè)備 fd 發(fā)送 TCC_LCD_FB_10CTL_SET_0VP 命令,設(shè)置層級(jí)關(guān)系為3,即可以實(shí)現(xiàn)第一幀緩存在上、第二幀緩存在下,具體參數(shù)由硬件決定。幀緩存的透明特性由硬件決定。
[0023]第一幀緩存用于顯示2D元素,大小為X*Y ;第二幀緩存用于顯示3D元素,大小為2Χ*Υ。優(yōu)選地,第一幀緩存和第二幀緩存都是連續(xù)內(nèi)存空間,線性數(shù)據(jù)存儲(chǔ)。
[0024]在步驟140,同步刷新第一幀緩存和第二幀緩存的顯示。
[0025]為呈現(xiàn)3D影像,需為左眼的視野和右眼的視野配置相同分辨率Χ*Υ的彩色屏幕,即,需要使用2Χ*Υ大小的幀緩沖。指定QWS顯示分辨率為Χ*Υ,用于顯示2D元素及整體界面框架。將其輸出至第一幀緩沖,并且覆于第二幀緩沖之上?;赒t實(shí)現(xiàn)的2D界面框架,除2D元素部分之外的其余部分,均添加透明屬性。
[0026]通過(guò)framebuffer的base地址來(lái)控制刷新第一幀緩沖與第二幀緩沖的左右眼顯示。第一幀緩沖為2D顯示,第二幀緩沖為3D顯示,兩層幀緩沖同步刷新。優(yōu)選地,第二幀緩沖的3D顯示方式可分為水平、豎直兩種。若切換水平/豎直顯示模式,需重新計(jì)算緩沖中貞首地址,以確保當(dāng)前巾貞的正確顯示。framebuffer是Iinux中的通用程序,用于一個(gè)視頻輸出設(shè)備從包含完整的幀數(shù)據(jù)的一個(gè)內(nèi)存緩沖區(qū)中來(lái)驅(qū)動(dòng)一個(gè)視頻顯示設(shè)備。
[0027]巾貞緩沖的首地址就是framebuffer的base地址。顯示之前數(shù)據(jù)初始化時(shí)base地址由硬件決定。當(dāng)需要切換顯示模式時(shí)才需重新計(jì)算base地址?!巴剿⑿隆奔矗谝粠彺婧偷诙彺鎯?nèi)的內(nèi)容可以由不同程序管理,在一個(gè)優(yōu)選實(shí)施例中,第一幀緩存由qws實(shí)時(shí)繪制,第二幀緩存由單獨(dú)程序控制,且同步顯示。
[0028]為了支持2D與3D混合界面、3D界面和2D界面之間的平滑切換,需配合顯示控制芯片調(diào)節(jié)幀緩沖層級(jí)關(guān)系來(lái)實(shí)現(xiàn),具體如下:
[0029]2D與3D混合界面通過(guò)顯示控制芯片調(diào)節(jié)第二幀緩沖置于頂層,覆于第一幀緩沖之上,即可轉(zhuǎn)換為純3D界面。
[0030]2D與3D混合界面去除第一幀緩沖中應(yīng)用程序窗體的透明屬性,且禁用顯示芯片默認(rèn)透明色填充窗體,即可轉(zhuǎn)換為純2D界面。2D界面與3D界面之間,還可用過(guò)顯示控制芯片調(diào)節(jié)幀緩沖層級(jí),來(lái)實(shí)現(xiàn)相互切換。
[0031]上述實(shí)施例僅供說(shuō)明本發(fā)明之用,而并非是對(duì)本發(fā)明的限制,有關(guān)技術(shù)領(lǐng)域的普通技術(shù)人員,在不脫離本發(fā)明的精神和范圍的情況下,還可以做出各種變化和變型,因此所有等同技術(shù)方案也應(yīng)屬于本發(fā)明的范疇,本發(fā)明的專(zhuān)利保護(hù)范圍應(yīng)由各權(quán)利要求限定。
【主權(quán)項(xiàng)】
1.一種在嵌入式Linux平臺(tái)下基于Qt的混合界面的實(shí)現(xiàn)方法,其特征在于,所述方法包括以下步驟: a.通過(guò)設(shè)定QWS_DISPLAY來(lái)指定Qt程序界面顯示的幀緩存,所述幀緩存包括第一幀緩存和第二幀緩存; b.將2D元素輸出至第一幀緩存; c.將3D元素輸出至第二幀緩存; d.同步刷新第一幀緩存和第二幀緩存的顯示。2.根據(jù)權(quán)利要求1所述的方法,其特征在于,第一幀緩存的大小為X*Y像素。3.根據(jù)權(quán)利要求1所述的方法,其特征在于,第二幀緩存的大小為2Χ*Υ像素。4.根據(jù)權(quán)利要求1所述的方法,其特征在于,當(dāng)將第二幀緩沖置于頂層,覆在第一幀緩沖之上時(shí),顯示界面為純3D界面;當(dāng)去除第一幀緩沖中的應(yīng)用程序窗體透明屬性,并且禁用顯示芯片默認(rèn)透明色填充窗體時(shí),顯示界面為純2D界面。5.根據(jù)權(quán)利要求1所述的方法,其特征在于,步驟d包括:第一幀緩存由qws實(shí)時(shí)繪制,第二幀緩存由第三方程序繪制,且同步顯示。6.根據(jù)權(quán)利要求1所述的方法,其特征在于,第二幀緩存為水平顯示或豎直顯示方式。7.根據(jù)權(quán)利要求1所述的方法,其特征在于,第一幀緩存和第二幀緩存均為實(shí)現(xiàn)線性數(shù)據(jù)存儲(chǔ)的連續(xù)內(nèi)存空間。
【專(zhuān)利摘要】本發(fā)明公開(kāi)了一種在嵌入式Linux平臺(tái)下基于Qt的混合界面的實(shí)現(xiàn)方法,所述方法包括以下步驟:通過(guò)設(shè)定QWS_DISPLAY來(lái)指定Qt程序界面顯示的幀緩存,所述幀緩存包括第一幀緩存和第二幀緩存;將2D元素輸出至第一幀緩存;將3D元素輸出至第二幀緩存;同步刷新第一幀緩存和第二幀緩存的顯示。本發(fā)明提供的在嵌入式Linux平臺(tái)下基于Qt的混合界面的實(shí)現(xiàn)方法能夠利用多幀緩沖,造成視覺(jué)印象疊加的效果。
【IPC分類(lèi)】G06F3/14
【公開(kāi)號(hào)】CN104951260
【申請(qǐng)?zhí)枴緾N201410125542
【發(fā)明人】顧國(guó)璋, 季冬夏
【申請(qǐng)人】奧視電子科技(海南)有限公司
【公開(kāi)日】2015年9月30日
【申請(qǐng)日】2014年3月31日