共用方式為


D3DHAL_DP2DRAWRECTPATCH結構 (d3dhal.h)

僅限 DirectX 8.0 和更新版本。

當D3DHAL_DP2COMMAND結構的 bCommand 成員設定為 D3DDP2OP_DRAWRECTPATCH,並使用 轉譯矩形修補程式時,D3dDrawPrimitives2 回呼會從命令緩衝區剖析D3DHAL_DRAWRECTPATCH

語法

typedef struct _D3DHAL_DP2DRAWRECTPATCH {
  DWORD Handle;
  DWORD Flags;
} D3DHAL_DP2DRAWRECTPATCH;

成員

Handle

指定與表面相關聯的句柄。

Flags

指定 DP2 資料流中D3DHAL_DP2DRAWRECTPATCH數據結構之後的其他資訊。

備註

Handle 成員是用來將表面與句柄產生關聯,因此下次繪製此表面時,就不需要重新指定此修補程式的D3DRECTPATCH_INFO數據結構。 這可讓驅動程式預先計算和快取正向差異係數和/或任何其他資訊,進而允許使用相同句柄的後續D3DDP2OP_DRAWRECTPATCH令牌更有效率地執行。 D3DRECTPATCH_INFO說明於最新的 DirectX SDK 檔中。

Handle 的實際值是由應用程式所決定,而且不在運行時間控制之下。 因此,驅動程式應該準備好處理可由 DWORD 指定的任何值。 特殊句柄值為零表示修補程式是動態的,而且沒有此修補程式的預先計算或快取資訊。 Handle 的子零值表示修補程式是靜態 (或以低頻率更新) ,而且可以預先計算和快取。

Flags 成員可用來傳達 DP2 數據流中D3DHAL_DP2DRAWRECTPATCH數據結構的其他資訊。 如果指定RTPATCHFLAG_HASSEGS,則四個浮點值會遵循 DP2 數據流中的D3DHAL_DP2DRAWRECTPATCH。 這些浮點數會為矩形修補程式的四個邊緣各提供區段計數,並覆寫轉譯狀態的值D3DRS_PATCHSEGMENTS。 如果指定RTPATCHFLAG_HASINFO,則 DP2 數據流中會遵循D3DRECTPATCH_INFO數據結構。 如果同時指定這兩個旗標,則指定區段計數的四個浮點數會遵循D3DHAL_DP2DRAWRECTPATCH,而D3DRECTPATCH_INFO結構會遵循浮點值。

驅動程式在處理D3DDP2OP_DRAWRECTPATCH時必須處理的案例有四種。

如果 Handle 為零,則修補程式是動態的,而且不應該執行預先計算或快取。 在此情況下,D3DRECTPATCH_INFO會遵循 DP2 數據流 (中的D3DHAL_DP2DRAWRECTPATCH,而旗標RTPATCHFLAG_HASINFO會設定為表示D3DRECTPATCH_INFO數據結構) 是否存在。 您也可以選擇性地設定RTPATCHFLAG_HASSEGS,以指出區段資訊是否存在。 不過,如果省略這個值,則應該改用轉譯狀態D3DRS_PATCHSEGMENTS的值。

如果 Handle 是子零,而且先前的D3DDP2OP_DRAWRECTPATCH尚未指定句柄值,這表示正在繪製新的可快取修補程式。 驅動程式應該配置記憶體來儲存快取的數據,並將此數據新增至其修補程式句柄數據表。 因為之前尚未看到此修補程式,所以應該設定RTPATCHFLAG_HASINFO旗標,而且 DP2 數據流中應該遵循D3DRECTPATCH_INFO結構。 不過,運行時間不保證這樣,驅動程式應該藉由測試 旗標來驗證修補程式資訊是否存在。 如果未指定任何資訊,則應該忽略此令牌,而且驅動程式的修補程式句柄數據表中不應配置任何句柄。 您也可以選擇性地設定RTPATCHFLAG_HASSEGS,以指出區段資訊是否存在。 不過,如果省略這個值,則應該改用轉譯狀態D3DRS_PATCHSEGMENTS的值。

如果 Handle 是子零,則句柄值已由先前的D3DDP2OP_DRAWRECTPATCH標記指定,而 Flags 字段包含RTPATCHFLAG_HASINFO,則會更新修補程式的定義。 D3DRECTPATCH_INFO數據結構會遵循 DP2 數據流,而驅動程式應該使用該結構來重新計算和重新快取修補程式資訊。 您也可以選擇性地設定RTPATCHFLAG_HASSEGS,以指出區段資訊是否存在。 不過,如果省略這個值,則應該改用轉譯狀態D3DRS_PATCHSEGMENTS的值。

如果 Handle 是子零,則句柄值已由先前的D3DDP2OP_DRAWRECTPATCH標記指定,而 Flags 字段不包含RTPATCHFLAG_HASINFO,則應該使用快取的資訊來繪製修補程式。 在此情況下,會忽略目前的頂點數據流;應該改用快取的資訊。 不過,在此情況下,仍然可以指定新的區段資訊。 因此,即使使用快取的修補程式,驅動程式也應該檢查旗標RTPATCHFLAG_HASSEGS並處理指定的區段資訊。

驅動程式會收到通知,指出快取的修補程式資訊會透過轉譯狀態D3DRS_DELETERTPATCH釋出。 此轉譯狀態的值是要刪除的修補程式。

規格需求

需求
標頭 d3dhal.h (包含 D3dhal.h)

另請參閱

D3DDP2OP_DRAWRECTPATCH

D3DHAL_DP2COMMAND

D3DHAL_DP2DRAWTRIPATCH

D3DRS_DELETERTPATCH

D3dDrawPrimitives2