回覆列表
  • 1 # 流雲訴往事

    首先,先講一下圖形庫的概念,圖形庫分為2D圖形向量庫和3D圖形庫,像2D的一般在windows上就是GDI、GDIplus、Direct2D。跨平臺的還有Cairo和AGG等等,可以在Linux、MacOs上使用。

    其中還要分軟體實現和硬體加速的實現,像gdi和gdiplus那都是用cpu執行的,是純軟體的方式,而且年代久遠,GDI是沒有抗鋸齒的,畫出來的效果也很差,但在很早的windows系統裡就是靠它來驅動2d介面的。現在基本都是D3D加D2D,而GDIplus是為了讓GDI支援抗鋸齒的產物,但它的效率簡直不忍直視。

    現在我們在windows看到的許多應用,都是用qt做的,還有很多是用directui框架做的,qq就是用自己的directui框架做的。這也就是說qt它不是一個圖形庫,這一點許多人都分不清,qt是一個跨平臺的介面框架。介面框架不僅僅包含了圖形抽象層,還包含許多控制元件實現,邏輯處理,訊息處理。它的底層圖形庫都是根據不同的平臺來做抽象的,現在也支援用opengl來渲染了。

    一般的2d圖形庫只是用軟體實現的,就是用cpu執行的,現在做的比較不錯的是谷歌的skia,它就是安卓底層的渲染圖形庫。

    至於GDI,它只能在Windows下用,雖然還是有不少的舊應用使用了GDI,之前Windows也增加了GDI的硬體加速,但現在應該都被Direct3D和2D取代了,這是趨勢,新的技術就是拿來替代舊的技術。

    未來肯定都是趨向3D庫了,2D庫應該都會成為附帶產物,但2D庫是一定會存在的,因為它很容易用來繪製介面。

  • 2 # TonyDeng

    圖形庫是與平臺有關的,不由語言提供,都是第三方庫。實際上,即使是語言標準庫,也是針對平臺提供的,原始碼層面上有共同點和可移植性,但庫是單獨編譯的,這就是C/C++程式換平臺必須重新編譯的原因,連結進來的標準庫不同實現的。

    本質上,C語言是不配帶庫的純語言,尤其是IO函式(從C標準庫有形形色色不同輸入輸出函式方式來看即知),入門第一個printf()函式正是最變態的外接函式。之所以有標準庫,是語言供應商根據市場情況編寫好贈送給使用者(程式設計師)的,C++還好,是標準委員會指導甚至親自指定,C根本沒有(早期的C編譯器庫五花八門,過來人都知道)。

    圖形與平臺密切相關,Windows有圖形API,然而Linux之類沒有,所以圖形庫不可移植,除非使用自身可移植的第三方圖形庫。本質上,C/C++直接對硬體程式設計,自己向顯示記憶體寫資料做輸出,文字和圖形均如此。任何庫,都封裝了現成的函式而已,語言從來沒說規定要怎麼實現!

  • 3 # 散居獵人

    程式語言提供語言要素完成演算法模型和過程描述,如C。

    開發平臺提供庫函式介面或演算法實現,如vc6。

    作業系統提供函式實現和介面,如windows API,還有Bios呼叫和外設驅動程式。

    OPENGL是與windowsAPI平行的圖形庫,為開發平臺提供三維模型實現。

  • 4 # 三袋大菠蘿

    C++的圖形庫多了去了,有GDI,還有QT,還有libSkia, 還有CoreGraphic。

    不同作業系統用的圖形API大多不同。

    但無論那種圖形庫實現,輸出最終都會呼叫GPU,只有經過GPU,才能最終顯示在顯示器上。

  • 中秋節和大豐收的關聯?
  • 大學生,想買一部華為手機2000元左右,求推薦?