xlib編程 FrameBuffer,xlib,opengl,gtk,qt,sdl之間的關(guān)系是怎樣的?
FrameBuffer,xlib,opengl,gtk,qt,sdl之間的關(guān)系是怎樣的?xbm是什么文件格式?x-bitmap(XBM)是一種古老但通用的圖像文件格式,與許多web瀏覽器兼容。X-Wi
FrameBuffer,xlib,opengl,gtk,qt,sdl之間的關(guān)系是怎樣的?
xbm是什么文件格式?
x-bitmap(XBM)是一種古老但通用的圖像文件格式,與許多web瀏覽器兼容。
X-Windows圖形界面(UNIX和Linux中常用的GUI)的C代碼庫(kù)Xlib中有一個(gè)組件專(zhuān)門(mén)描述了其規(guī)范。
XBM圖形的本質(zhì)是用十六進(jìn)制數(shù)組來(lái)表示二進(jìn)制圖像的C源代碼文件。
Qt如何捕獲鍵盤(pán)事件?
可以通過(guò)調(diào)用Xlib庫(kù)來(lái)實(shí)現(xiàn)。另外,還有一個(gè)Xlib的python封裝庫(kù)python-Xlib,它封裝了Xlib的各種接口。這個(gè)例子有一個(gè)記錄演示.py演示捕獲全局鍵盤(pán)和鼠標(biāo)事件,pro測(cè)試可用
請(qǐng)問(wèn),linux下C/C 怎么獲取屏幕分辨率?(不使用Qt和GTK)?
直接使用Xlib:char*displayuuName=getenv(“display”)unsigned int display=XOpenDisplay(displayuName)int screenuNum=DefaultScreen(display)unsigned int displayuWidth=DisplayWidth(display,screenuNum)unsigned int displayuHeight=DisplayHeight(display,screenuNum)printf(“w=%d h=%dn”顯示uuuwidth,顯示uuuheight
首先,讓我們來(lái)談?wù)剤D形庫(kù)的概念。圖形庫(kù)分為二維圖形矢量庫(kù)和三維圖形庫(kù)。與2D一樣,它是windows上的GDI、gdiplus和direct2d。還有跨平臺(tái)Cairo和AGG,可以在Linux和MacOS上使用。
它還包括軟件實(shí)現(xiàn)和硬件加速。例如,GDI和gdiplus由CPU執(zhí)行,這是一種純軟件方式。而且,GDI長(zhǎng)時(shí)間沒(méi)有抗混疊,繪制效果很差。但在早期的windows系統(tǒng)中,它被用來(lái)驅(qū)動(dòng)2D界面?,F(xiàn)在基本上是D3D加D2D,GDI plus是一個(gè)讓GDI支持反走樣的產(chǎn)品,但是它的效率不能直接看出來(lái)。
現(xiàn)在我們?cè)趙indows中看到的許多應(yīng)用程序都是用QT制作的,而且許多應(yīng)用程序是用directui框架制作的。QQ是用自己的directui框架制作的。也就是說(shuō),QT不是一個(gè)圖形庫(kù),這是很多人無(wú)法分辨的。QT是一個(gè)跨平臺(tái)的接口框架。接口框架不僅包括圖形抽象層,還包括許多控制實(shí)現(xiàn)、邏輯處理和消息處理。它的底層圖形庫(kù)是根據(jù)不同的平臺(tái)抽象出來(lái)的,現(xiàn)在也支持OpenGL的渲染。
通用2D圖形庫(kù)僅由軟件實(shí)現(xiàn),由CPU執(zhí)行?,F(xiàn)在更好的是谷歌的skia,它是Android底層的渲染圖形庫(kù)。
對(duì)于GDI,它只能在windows下使用。雖然現(xiàn)在仍然有很多老的應(yīng)用程序使用GDI,windows以前也增加了GDI硬件加速,但是現(xiàn)在應(yīng)該用Direct3D和2D來(lái)代替,這是一個(gè)趨勢(shì)。新技術(shù)正在取代舊技術(shù)。
在未來(lái),它肯定是3D庫(kù)。二維庫(kù)應(yīng)該是一個(gè)副產(chǎn)品,但二維庫(kù)將存在,因?yàn)樗苋菀桌L制界面。
請(qǐng)問(wèn)C 的圖形庫(kù)都是基于Windows提供的GDI函數(shù)實(shí)現(xiàn)的嗎?
X protocol C語(yǔ)言綁定(xcb)是Xlib的替代品,具有占用空間小、延遲保持、直接訪問(wèn)協(xié)議、改進(jìn)的線程支持和可擴(kuò)展性