版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、EGLVersion1.4閱讀理解閱讀理解1.1.概覽概覽EGL是介于各種粉刷(rendering)API如(OpenGL,OpenVG等)和底層窗口系統(tǒng)平臺(tái)之間的接口。EGL提供各種機(jī)制創(chuàng)建圖形context和粉刷surface供客戶API使用。同時(shí),EGL也在繪圖的過程中為本地繪圖平臺(tái)和客戶api提供同步機(jī)制。EGL提供遠(yuǎn)程和間接粉刷機(jī)制,而GLXAPI則有這個(gè)機(jī)制。2.2.EGLEGL操作操作2.12.1本地窗口系統(tǒng)和粉刷本地窗口
2、系統(tǒng)和粉刷APIAPIEGL可以在多個(gè)操作系統(tǒng)(塞班嵌入式linuxunixwindows等)和多種本地窗口(XMicrosoftWindows)中實(shí)現(xiàn)。EGL的實(shí)現(xiàn)也可能允許本地其他的粉刷api來粉刷EGLsurface,如(Xlib,GDI)。2.1.12.1.1常數(shù)類型常數(shù)類型1.EGLBoolean:egl的boolean類型,值可以是EGL_TRUE(1)和EGL_FALSE(0).2.EGLint:類似于int類型。2.1.
3、22.1.2DisplayDisplay大部分EGL調(diào)用都會(huì)使用EGLDisplay參數(shù),它代表一個(gè)抽象的屏幕。2.22.2粉刷上下文和繪圖平面(粉刷上下文和繪圖平面(RenderingRenderingContextsContextsDrawingDrawingSurfacesSurfaces)EGL的一個(gè)最主要的目的就是提供粉刷上下文和繪圖平面的創(chuàng)建函數(shù)供客戶端API使用。EGL定義了多種繪圖平面類型,統(tǒng)稱EGLSurface。主要
4、包括如下三類:(1)windowsurface:可以將里面的圖形緩沖畫到屏幕上。(2)pbufferssurface:數(shù)據(jù)存在內(nèi)存緩沖上,不能畫在屏幕上。(3)pixmapssurface:本地api可以訪問的內(nèi)存數(shù)據(jù)緩沖。EGLSurface是依照各自的EGLConfig來進(jìn)行的(其實(shí)就是創(chuàng)建EGLSurface的函數(shù)需要EGLCongif做參數(shù))。EGLConfig描述了所創(chuàng)建的平面需要的顏色深度,類型,輔助緩沖等一些信息。輔助緩存
5、是對(duì)應(yīng)于EGLSurface的,而不是context。如果很多context向同一個(gè)surface畫圖,則context之間會(huì)共享這些緩沖。Surface和Context之間有一種兼容性的說法,滿足兼容性條件后,surface才能被context使用。這些條件是:(1)支持相同類型的顏色緩沖。(顏色緩沖類型包括RGBluminance等)(2)具有相同的顏色緩沖深度和輔助緩沖深度。這里的深度只各個(gè)顏色深度都要相同,比如RGB565與RG
6、B4444中,雖然顏色深度總和都是16bitpixel,但是每個(gè)維度的深度不一樣。因此,他們是不兼容的。輔助緩沖有一個(gè)特例,如果某個(gè)輔助緩沖對(duì)于某個(gè)客戶API是沒有意義的(不需要的),那么,這種緩沖不考慮兼容性。如,一個(gè)surface包含顏色緩沖和stencilbuffer,當(dāng)OpenVG粉刷api下的Context包含相同的顏色緩沖時(shí),他們是兼容的。因?yàn)椋琌penVG不需要stencilbuffer。(3)surface和contex
7、t需要在相同類型的客戶api(都是opengl或都是openVG等)創(chuàng)建函數(shù)下創(chuàng)建。(4)他們的創(chuàng)建函數(shù)中使用的display參數(shù)是一樣的。滿足兼容條件時(shí),一個(gè)context可以往多個(gè)EGLSurface上作畫,一個(gè)EGLSurface也可以對(duì)應(yīng)多個(gè)context。2.2.12.2.1使用粉刷上下文(使用粉刷上下文(RenderingRenderingContextContext)OpenGLES定義了客戶端狀態(tài)和服務(wù)端狀態(tài)。因此,Op
8、enGLES的context包含客戶和服務(wù)端兩個(gè)狀態(tài)。OpenVG則沒有。OpenGLES和OpenVG客戶API都采用了隱含的context作為粉刷入口點(diǎn),而不是在繪圖函數(shù)中傳入Context參數(shù)。因此,EGL會(huì)提供一個(gè)函數(shù)(makeCurrent(…))來使某個(gè)context變成當(dāng)前使用狀態(tài)。每個(gè)線程最多可以為每個(gè)支持的客戶端api(openglopenVG等)創(chuàng)建一個(gè)當(dāng)前粉刷context。另外,同一時(shí)刻,一個(gè)context只能被
9、一個(gè)線程置成當(dāng)前。2.2.22.2.2粉刷模式粉刷模式EGL支持兩種粉刷模式:后備緩沖和單緩沖。(backbufferedsinglebuffered)后備緩沖可以用在window和pbuffer兩種surface中,EGL負(fù)責(zé)相關(guān)的內(nèi)存申請(qǐng)和使用。單緩沖則用在pixmapsurface中,其內(nèi)存格式和本地系統(tǒng)使用的pixmap格式一樣,可供本地窗口系統(tǒng)函數(shù)訪問。當(dāng)然,某些些客戶api比如Opengl和OpenVG,也支持單緩沖的win
10、dowsurface。不管是單緩沖還是后備緩沖的surface都可以通過eglCopyBuffers()函數(shù),拷貝到指定的本地pixmap中。EGLsurface對(duì)應(yīng)的本地窗口縮放時(shí),EGL的windowsurface也需要跟著縮放。一般的實(shí)現(xiàn)過程是,本地操作系統(tǒng)和窗口系統(tǒng)執(zhí)行一個(gè)的回調(diào)函數(shù)通知EGL改變窗口大小,這個(gè)改變對(duì)客戶端api是透明的。也有一些EGL實(shí)現(xiàn),是通過(1)EGLBooleaneglGetConfigs(EGLDis
11、playdpyEGLConfigconfigsEGLintconfig_sizeEGLintnum_config)查詢所有指定display下的EGLCongifs,num_config返回了可用的數(shù)目。(2)EGLBooleaneglChooseConfig(EGLDisplaydpyconstEGLintattrib_listEGLConfigconfigsEGLintconfig_sizeEGLintnum_config)傳入需求
12、的屬性列表,看是否有合適的config。(3)EGLBooleaneglGetConfigAttrib(EGLDisplaydpyEGLConfigconfigEGLintattributeEGLintvalue)查詢某個(gè)config的某些屬性值。3.53.5粉刷表面(粉刷表面(RenderingRenderingSurfaceSurface)(1)EGLSurfaceeglCreateWindowSurfaceeglCreateWin
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 眾賞文庫僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
評(píng)論
0/150
提交評(píng)論