[筆摘]GDI
[筆摘]
GDI繪圖的方法
GDI繪圖的方法
在DOS時期,應用程式如果要對於顯示裝置做輸出的話,
必須使用INT 10[1],
或對於VGA卡直接I/O,
或直接對VRAM所在的記憶體位置作填值
Windows 打造一個GDI子系統,將顯示裝置改以API的方式進行操作,以便將各VGA卡的差異透過各VGA卡廠商自行製作的驅動程式來銜接GDI,來打消各VGA卡在操作上的彼此差異。
Windows 打造一個WING[2]用於Windows 3.0/3.1,讓應用程式能夠直接對VRAM進行填值,以加速繪圖的相關計算
DirectX WING再改為DirectDraw成為DirectX的一部份,
DirectX 7。
DirectX 8以後,DirectX中2D與3D顯示技術合併,開始進入全3D的貼圖計算方式
DirectX 9提出了全新的Shader繪圖功能以及高階著色語言 (HLSL)。
DirectX 9主要就是處理幾何圖形變換以及光線渲染。
DirectX 9OpenGL霸主地位開始被瓦解。
DirectX 10時,已經進入以DirectX的COM為基礎,以.Net Framework方式進行封裝的XNA之時代。XNA身兼DirectX的效能與.Net Framework的使用便利性,
目前被應用於XBOX系列的遊戲主機上,現已成為新一代的圖形子系統的主流。
(現代的遊戲通常使用DirectX和OpenGL而不是GDI,因為這些技術能更好的讓程式設計師利用硬體的特性來加速圖形圖像的顯示)
必須使用INT 10[1],
或對於VGA卡直接I/O,
或直接對VRAM所在的記憶體位置作填值
Windows 打造一個GDI子系統,將顯示裝置改以API的方式進行操作,以便將各VGA卡的差異透過各VGA卡廠商自行製作的驅動程式來銜接GDI,來打消各VGA卡在操作上的彼此差異。
Windows 打造一個WING[2]用於Windows 3.0/3.1,讓應用程式能夠直接對VRAM進行填值,以加速繪圖的相關計算
DirectX WING再改為DirectDraw成為DirectX的一部份,
DirectX 7。
DirectX 8以後,DirectX中2D與3D顯示技術合併,開始進入全3D的貼圖計算方式
DirectX 9提出了全新的Shader繪圖功能以及高階著色語言 (HLSL)。
DirectX 9主要就是處理幾何圖形變換以及光線渲染。
DirectX 9OpenGL霸主地位開始被瓦解。
DirectX 10時,已經進入以DirectX的COM為基礎,以.Net Framework方式進行封裝的XNA之時代。XNA身兼DirectX的效能與.Net Framework的使用便利性,
目前被應用於XBOX系列的遊戲主機上,現已成為新一代的圖形子系統的主流。
(現代的遊戲通常使用DirectX和OpenGL而不是GDI,因為這些技術能更好的讓程式設計師利用硬體的特性來加速圖形圖像的顯示)
GDI是微軟視窗系統表徵圖形物件及將其傳送給諸如監視器、印表機之類輸出裝置的標準。
GDI用來完成一些和繪製有關的工作,像直線或曲線的繪製,文字渲染,調色盤控制。
GDI最大的好處是它有可以直接存取硬體裝置的能力。
GDI可以非常容易的在不同類型的裝置上繪製圖形,像顯示器和印表機或類似的顯示裝置。(這些能力是微軟Windows系統「所見即所得」程式的核心。)
簡單的不需要『快速圖形渲染』的遊戲可能會用到GDI。
GDI對一些高階的動畫製作無能為力,它
缺少顯卡中影格的概念,還
缺少3D圖形硬體光柵化的支援等等。
GDI它不能用來直接繪製一些介面元素,像視窗、清單等等,
這些工作由使用者子系統來完成,位於user32.dll中,它是建立在GDI之上的一個軟體層。
GDI用來完成一些和繪製有關的工作,像直線或曲線的繪製,文字渲染,調色盤控制。
GDI最大的好處是它有可以直接存取硬體裝置的能力。
GDI可以非常容易的在不同類型的裝置上繪製圖形,像顯示器和印表機或類似的顯示裝置。(這些能力是微軟Windows系統「所見即所得」程式的核心。)
簡單的不需要『快速圖形渲染』的遊戲可能會用到GDI。
GDI對一些高階的動畫製作無能為力,它
缺少顯卡中影格的概念,還
缺少3D圖形硬體光柵化的支援等等。
GDI它不能用來直接繪製一些介面元素,像視窗、清單等等,
這些工作由使用者子系統來完成,位於user32.dll中,它是建立在GDI之上的一個軟體層。
GDI的東西,比如Macintosh的Quartz(傳統的QuickDraw),和GTK的GDK/Xlib。
GDI+在圖形計算與顯示不算快,以及先後飽受遠端程式碼執行的漏洞等問題之下,使得其無法成為微軟在圖形子系統的主流。
GDI+從Windows XP作業系統開始引入
GDI+提供二維的向量圖形
GDI+加強的視覺化屬性,例如邊界,漸變和透明。
GDI+通過GDI+,能夠直接將BMP轉成JPG或其它格式的圖片,還能夠生成SVG、Flash等
GDI+使用ARGB的值來表示顏色。.
GDI+雙緩衝技術(可以提高繪圖效率,可避免螢幕閃爍)
GDI+無法直接使用VGA卡上的GPU來加速繪圖的相關計算(DirectX則是從COM到底層的顯示卡驅動程式的組合)
GDI+只能做到Lock記億體進行操作
留言
張貼留言