共用方式為


Direct3D 9 (裝置類型和頂點處理需求)

頂點處理作業的效能,包括轉換和光源,取決於頂點緩衝區存在於記憶體中的位置,以及所使用的轉譯裝置類型。 應用程式會在建立頂點緩衝區時控制其記憶體配置。 設定D3DPOOL_SYSTEMMEM記憶體旗標時,會在系統記憶體中建立頂點緩衝區。 使用D3DPOOL_DEFAULT記憶體旗標時,設備磁碟機會決定頂點緩衝區的記憶體最適合配置的位置,通常稱為驅動程式最佳記憶體。 驅動程式優化記憶體可以是本機視訊記憶體、非本機視訊記憶體或系統記憶體。

使用 IDirect3DDevice9::CreateVertexBuffer 設定D3DUSAGE_SOFTWAREPROCESSING常數,即可在頂點緩衝區資料上進行軟體頂點處理。 在混合模式中,軟體頂點處理需要此旗標。 旗標可能無法用於硬體頂點處理模式。 與軟體頂點處理搭配使用的頂點緩衝區包括下列各項:

您用來判斷頂點緩衝區的記憶體位置 - 系統或驅動程式最佳的原因,與紋理的記憶體位置相同。 頂點處理,包括轉換和光源,在硬體中最適合在驅動程式優化記憶體中配置頂點緩衝區時,而軟體頂點處理最適合配置於系統記憶體中的頂點緩衝區。 對於紋理,當紋理配置在驅動程式最佳記憶體時,硬體點陣化效果最佳,而軟體點陣化最適合系統記憶體紋理。

Microsoft Direct3D 9 支援獨立處理頂點,而不使用 IDirect3DDevice9::P rocessVertices 方法轉譯任何基本類型。 此獨立頂點處理一律會在主機處理器的軟體中執行。 因此,必須使用 D3DUSAGE_SOFTWAREPROCESSING 旗標建立作為 IDirect3DDevice9::SetStreamSource 所設定來源的頂點緩衝區。 IDirect3DDevice9::P rocessVertices所提供的功能與IDirect3DDevice9::D rawPrimitiveIDirect3DDevice9::D rawIndexedPrimitive方法相同,同時使用軟體頂點處理。

如果您的應用程式執行自己的頂點處理,並將轉換、光線和裁剪的頂點傳遞至轉譯方法,則應用程式可以直接將頂點寫入驅動程式最佳記憶體中配置的頂點緩衝區。 這項技術會防止稍後的冗餘複製作業。 請注意,如果您的應用程式從頂點緩衝區讀取資料,因為主機從驅動程式優化記憶體完成的讀取作業可能會非常慢,所以這項技術將無法正常運作。 因此,如果您的應用程式需要在處理期間讀取或將資料寫入緩衝區,則系統記憶體頂點緩衝區是較佳的選擇。

使用 Direct3D 頂點處理功能 (時,將未轉換的頂點傳遞至頂點緩衝區轉譯方法) ,視裝置類型和裝置建立旗標而定,處理可能會發生在硬體或軟體中。 建議在集區中配置頂點緩衝區D3DPOOL_DEFAULT,以達到幾乎所有情況的最佳效能。 當裝置使用硬體頂點處理時,可能會根據旗標D3DUSAGE_DYNAMIC和D3DUSAGE_WRITEONLY完成一些額外的優化。 如需使用這些旗標的詳細資訊,請參閱 IDirect3DDevice9::CreateVertexBuffer。

頂點緩衝區