跳至內容

圖形裝置介面

出自Taiwan Tongues 台語維基
這是此頁批准,以及是最近的修訂。

圖形裝置介面(英語:Graphics Device Interface,縮寫 GDI)是微軟視窗仔系統提供的應用程式介面,嘛是其用來表示圖的形物件、將圖形物件傳送予諸如監視器、印表機之類輸出裝置的核心組件。GDI 是視窗作業系統(Microsoft Windows)的三大核心部件(嘛稱「子系統」)之一。GDI +佇咧 GDI 的基礎上調整編程模型,同時加入去矣漸漸變色畫刷、Alpha 透等功能。

GDI 用來完成一寡佮畫製有關係的工課,你像直線抑是曲線的畫製,文字彩現,調色盤控制。伊袂當用來直接畫一寡介面元素,像視窗、清單等等,遮的工課由使用者系統來完成,佇佗位咧 user 三十二 . dll 中,伊是建立佇咧 GDI 之上的一個軟體層。其他的系統嘛有類似 GDI 的物件,比如講 Macintosh 的 Quartz(傳統的 QuickDraw), 和 GTK 的 GDK / Xlib。

GDI 上大的好處是伊有會當直接存取硬體裝置的能力。通過 GDI 會當真容易佇無仝類型的裝置畫畫圖,像顯示器佮印表機抑是類似的顯示裝置。遮的能力是微軟 Windows 系統「所看即所得」程式的核心。

簡單的毋免快速圖形目的遊戲可能會用著 GDI。猶毋過 GDI 對一寡進階的動畫製作無能為力,伊欠缺顯示卡中影格的概念,猶閣欠三 D 圖形硬體光柵化的支援等等。現代的遊戲通常使用 DirectX 和 OpenGL 毋是 GDI,因為遮的技術會當閣較好的予程式設計師利用硬體的特性來加速圖形圖像的顯示。

簡介

佇咧 DOS 時期,應用程式若欲對顯示裝置做輸出來,著愛使用 INT 十,抑是對著 VGA 卡直接 I / O,抑是直接著 VRAM 所在的記持體位置作添值。猶毋過 VGA 卡彼當陣日新月異,各家的 VGA 卡佇咧其實 I / O ports 的定義並無一致,雖中央有推出一个名為 VESA SVGA 的顯示卡驅動程式的共享標準,毋過因為 DOS 是先天的六十四 KB 的分頁的限制,猶原有足濟不便。

微軟咧開發 Windows 時,發現這个問題,所以決定是打造一个 GDI 子系統,共顯示裝置改用 API 的方式進行操作,以便將各 VGA 卡的差異透過各 VGA 卡廠商家己製作的驅動程式來接接 GDI,來打消各 VGA 卡佇咧操作而且那此差異。

毋過微軟真緊就去予其他的程式開發者通知,GDI 傷慢矣,所以 Microsoft 就閣出一个 WING 用佇咧 Windows 三 . 三分之零 . 一,予應用程式會當直接著 VRAM 進行添值,以加速繪圖的相關計算。

後來,WING 才共改做 DirectDraw 成做 DirectX 的一部份,一直到 DirectX 七。(DirectX 八了後,DirectX 中二 D 與三 D 顯示技術合併,開始進入全三 D 的貼圖計算方式)

軟軟仔咧捒 . Net Framework 時,才閣共 GDI 用 . Net Framework 方式進行封裝,毋過因為 GDI 本身的限制,閣加上微軟仔家己佇咧 MSDN Library 頂懸的檔案佇實用性上欠缺實證(有一寡功能已經有技術檔案,毋過毋捌做出實際可用的功能), 閣加上 GDI + 佇圖形算與顯示無算緊,猶閣有先後飽受遠端程式碼執行的閬縫等等的問題之下,予其無法度成做是微軟仔佇咧圖形子系統的主流。

一直到 DirectX 十點,已經進入以 DirectX 的 COM 為基礎,以 . Net Framework 方式去進行封裝的 XNA 之時代。XNA 兼身 DirectX 的效能佮 . Net Framework 的使用這个便利性,目前去予人應用佇 XBOX 系列的遊戲主機頂懸,這馬成做新一代的圖形子系統的主流。

GDI +

GDI + 對 Windows XP 作業系統開始引入,提供二維的向量圖形,改進舊有的 GDI,加強的視覺化屬性,譬如講邊界,漸漸變佮透明。通過 GDI +,會當直接共 BMP 轉成 JPG 抑是其他格式的圖片,猶閣會當生 SVG、Flash 等。GDI + 使用 ARGB 的值來表示色水。GDI + 的雙緩衝技術會當提高繪圖效率,會當避免螢幕閃爍爍。

GDI + 叫做提供硬體加速功能,會當直接存取硬體。但是這敢若誠譀的講法,GDI + 無法度直接使用 VGA 卡著的 GPU 來加速繪圖的相關計算,所以佇繪圖效能上遠遠袂赴 DirectX,干焦會當做一塊 Lock 記持體來進行操作。(GDI + 只是一組重新封裝 GDI 的 API,DirectX 著是對 COM 到底層的顯示卡驅動程式的組合)

隨 GDI + 推出了加強型 EMF,即 EMF +,會當同時支援 GDI 和 GDI +。Microsoft . NET 透過 System . Drawing 號名空間提供著 GDI + 的支援。The GDI + 的 DLL 會當徙栽去到舊的 Windows 版本上。

GDI + 類似 Apple 的 Quartz 二 D 子系統,以及屬於開放原始碼(open-source)的 libart 和 Cairo 媒體櫃。

參考文獻

外部連結

  • GDI | Microsoft Docs
  • Windows GDI-Windows applications | Microsoft Docs
  • GDI +-Win 三十二 apps | Microsoft Docs