1. D3D入門
本節(jié)提供一個對D3D圖形編程接口(API)的簡短介紹。這里你將發(fā)現(xiàn)一個圖形管道的概貌以及幫助你實(shí)現(xiàn)基本D3D功能的指南。
1.1. D3D架構(gòu)
本節(jié)包含Microsoft的D3D組件、其他Microsoft DirectX、操作系統(tǒng)和系統(tǒng)硬件之間的關(guān)系;下面將討論這些主題。
1.1.1. D3D的架構(gòu)概覽
這是一個圖形管道的描述。每個塊的功能性在下面介紹,連接包含更多的信息。
更多關(guān)于D3D的可編程節(jié)的架構(gòu)見《可編程頂點(diǎn)梯度架構(gòu)》和《可編程像素梯度架構(gòu)》。

1.1.2. 硬件抽象層
微軟的D3D通過HAL(硬件抽象層)提供設(shè)備獨(dú)立;HAL是由設(shè)備制造商提供的設(shè)備指定接口,D3D直接使用顯示硬件來工作。程序才能不需要和HAL交互。應(yīng)用程序使用D3D暴露的一系列接口和方法而不是HAL提供的機(jī)制來使用顯示設(shè)備。設(shè)備制造商在WINDOWS的各個平臺上(XP、2000、98等)上實(shí)現(xiàn)32位的編程。HAL可以是顯示驅(qū)動器的一部分或和設(shè)備驅(qū)動器通過一個驅(qū)動器生產(chǎn)商定義的接口來通訊的獨(dú)立DLL。
D3D HAL由芯片制造商、主板生產(chǎn)商或OEM實(shí)現(xiàn)。HAL僅僅實(shí)現(xiàn)設(shè)備依賴的代碼并在不競爭的執(zhí)行。如果硬件沒有執(zhí)行一個功能,HAL就不會將其作為硬件功能來報告。另外,HAL并不驗(yàn)證參數(shù),D3D在調(diào)用HAL之前執(zhí)行參數(shù)驗(yàn)證。
在微軟DirectX 9,HAL可以有三種不同的頂點(diǎn)處理模式:軟件頂點(diǎn)處理、硬件頂點(diǎn)處理和同一個設(shè)備上的混合頂點(diǎn)處理。純設(shè)備模式是HAL設(shè)備的變量。純設(shè)備類型僅僅支持硬件頂點(diǎn)處理,并僅僅允許應(yīng)用程序查詢設(shè)備狀態(tài)的一個小的子集。另外,純設(shè)備僅僅在有最小化容量級別的適配器上可用。
1.1.3. 系統(tǒng)整體
下圖顯示了微軟D3D、GDI、HAL以及硬件之間的關(guān)系。
在上圖中,我們看到,D3D程序和GDI程序一樣都通過顯示卡的設(shè)備驅(qū)動來訪問圖形硬件。與GDI不同的是,D3D可以在選擇一個HAL設(shè)備的時候利用硬件特性,HAL設(shè)備提供了基于顯示卡支持的硬件加速。你可以通過D3D在運(yùn)行的時候來決定設(shè)備是否有這個能力。
關(guān)于設(shè)備的更多信息參見設(shè)備類型。

2006年2月15日