GDI是圖形裝置介面(Graphics Device Interface, 或Graphical Device Interface)的簡稱,它是微軟公司的視窗作業系統(Microsoft Windows)的三大核心部件(也稱“子系統”)之一。
GDI是微軟視窗系統(Microsoft Windows)表徵圖形物件及將其傳送給諸如顯示器、印表機之類輸出裝置的標準。
在DOS時期,應用程式如果要對於顯示裝置做輸出的話,必須使用INT 10[1],或對於VGA卡直接I/O,或直接對VRAM所在的記憶體位置作填值。但VGA卡當時日新月異,各家的VGA卡在其I/O ports的定義並不一致,雖中間有推出一個名為VESA SVGA的顯示卡驅動程式的共用標準,但由於DOS時先天的64KB的分頁限制,仍有許多不便。
Microsoft在開發Windows時,發現這個問題,於是決定打造一個GDI子系統,將顯示裝置改以API的方式進行操作,以便將各VGA卡的差異透過各VGA卡廠商自行製作的驅動程式來銜接GDI,來打消各VGA卡在操作上的彼此差異。
但Microsoft很快就被其他的程式開發者告知,GDI太慢了,因此Microsoft就再出一個WING[2]用於Windows 3.0/3.1,讓應用程式能夠直接對VRAM進行填值,以加速繪圖的相關計算。
後來,Microsoft再推 .Net Framework,又再把 GDI 用 .Net Framework方式進行封裝,可是由於GDI本身的限制,再加上Microsoft自己在MSDN Library上面用來寫著爽的檔案(有些功能已有技術檔案,但從未實做出可用之功能過),再加上GDI+在圖形計算與顯示很慢,以及GDI+先後飽受遠端程式碼執行的漏洞的困擾,因此GDI+無法成為Microsoft在圖形子系統的主流。
再後來,DirectX 10進入XNA的時代,XNA是以DirectX的COM為基礎,以.Net Framework方式進行封裝,所以XNA身兼DirectX的效能與.Net Framework的使用便利性。XNA目前被應用於XBOX系列的遊戲主機上,已成為新一代的圖形子系統的主流。
GDI是圖形裝置介面(Graphics Device Interface, 或Graphical Device Interface)的簡稱,它是微軟公司的視窗作業系統(Microsoft Windows)的三大核心部件(也稱“子系統”)之一。
GDI是微軟視窗系統(Microsoft Windows)表徵圖形物件及將其傳送給諸如顯示器、印表機之類輸出裝置的標準。
在DOS時期,應用程式如果要對於顯示裝置做輸出的話,必須使用INT 10[1],或對於VGA卡直接I/O,或直接對VRAM所在的記憶體位置作填值。但VGA卡當時日新月異,各家的VGA卡在其I/O ports的定義並不一致,雖中間有推出一個名為VESA SVGA的顯示卡驅動程式的共用標準,但由於DOS時先天的64KB的分頁限制,仍有許多不便。
Microsoft在開發Windows時,發現這個問題,於是決定打造一個GDI子系統,將顯示裝置改以API的方式進行操作,以便將各VGA卡的差異透過各VGA卡廠商自行製作的驅動程式來銜接GDI,來打消各VGA卡在操作上的彼此差異。
但Microsoft很快就被其他的程式開發者告知,GDI太慢了,因此Microsoft就再出一個WING[2]用於Windows 3.0/3.1,讓應用程式能夠直接對VRAM進行填值,以加速繪圖的相關計算。
後來,Microsoft再推 .Net Framework,又再把 GDI 用 .Net Framework方式進行封裝,可是由於GDI本身的限制,再加上Microsoft自己在MSDN Library上面用來寫著爽的檔案(有些功能已有技術檔案,但從未實做出可用之功能過),再加上GDI+在圖形計算與顯示很慢,以及GDI+先後飽受遠端程式碼執行的漏洞的困擾,因此GDI+無法成為Microsoft在圖形子系統的主流。
再後來,DirectX 10進入XNA的時代,XNA是以DirectX的COM為基礎,以.Net Framework方式進行封裝,所以XNA身兼DirectX的效能與.Net Framework的使用便利性。XNA目前被應用於XBOX系列的遊戲主機上,已成為新一代的圖形子系統的主流。