共用方式為


PFND3DDDI_DRAWRECTPATCH回呼函式 (d3dumddi.h)

DrawRectPatch 函式會繪製新的或快取的矩形修補程式,或更新先前定義的修補程式規格。

語法

PFND3DDDI_DRAWRECTPATCH Pfnd3dddiDrawrectpatch;

HRESULT Pfnd3dddiDrawrectpatch(
  [in] HANDLE hDevice,
       const D3DDDIARG_DRAWRECTPATCH *unnamedParam2,
       const D3DDDIRECTPATCH_INFO *unnamedParam3,
       const FLOAT *unnamedParam4
)
{...}

參數

[in] hDevice

顯示裝置的句柄(圖形內容)。

unnamedParam2

pData [in]

描述要繪製之矩形修補程式之 D3DDDIARG_DRAWRECTPATCH 結構的指標。

unnamedParam3

pInfo [in]

自選。 描述矩形修補資訊之D3DDDIRECTPATCH_INFO結構的指標。

unnamedParam4

pPatch [in]

自選。 緩衝區的指標,其中包含四個浮點值(D3DFLOAT[4]),可提供矩形修補四個邊緣的區段計數。

傳回值

DrawRectPatch 傳回S_OK,如果矩形修補未成功繪製,則傳回適當的錯誤結果。

言論

當 Microsoft Direct3D 執行時間呼叫pPatch 使用者模式顯示驅動程式的 DrawRectPatch 函式時,它可以選擇性地在 pInfo 和參數中提供資訊。 運行時間會在 FlagsD3DDDIARG_DRAWRECTPATCH 結構的成員 pData 中設定旗標,以指出它是否提供這個選擇性資訊。

運行時間會在 Handle D3DDDIARG_DRAWRECTPATCH 成員中提供 UINT 值,以參考修補程式介面。 每當運行時間重新繪製修補程式介面時,它會傳遞修補程式句柄值,而且不需要重新指定修補程式介面的D3DDDIRECTPATCH_INFO數據結構。 使用者模式顯示驅動程式可以預先計算和快取正向差異係數和任何其他資訊。 因此,後續呼叫驅動程式的 DrawRectPatch 函式,以更有效率地執行相同的修補程式句柄值。

Handle 中的實際值是由應用程式決定,而且不在運行時間控制之下。 因此,驅動程式必須處理 UINT 可以指定的任何值。

特殊 Handle 值為零,表示修補程式是動態的;因此,驅動程式無法預先計算或快取修補程序的資訊。 Handle 的非零值表示修補程式是靜態的(或以低頻率更新):因此,驅動程式可以預先計算和快取修補程序的資訊。

驅動程式必須在其 DrawRectPatch 函式中處理下列案例:

  • 如果 句柄 成員為零,則修補程式是動態的。 驅動程式不應該預先計算或快取修補程序的資訊。 在此情況下,運行時間會將指標傳遞至 pInfo 參數 pInfo 中的D3DDDIRECTPATCH_INFO結構指標,並在 D3DDDIARG_DRAWRECTPATCH 結構的 Flags 成員中設定RTPATCHFLAG_HASINFO旗標,以指出 pInfo 中D3DDDIRECTPATCH_INFO結構是否存在。 或者,運行時間也可以在 Flags 中設定RTPATCHFLAG_HASSEGS旗標,以指出 pPatch 參數所指定的區段資訊是否存在。 不過,如果運行時間未在 pPatch 提供區段資訊,則運行時間應該改用D3DRS_PATCHSEGMENTS轉譯狀態值。
  • 如果先前呼叫驅動程式 DrawRectPatch 函式時未指定非零 Handle 值,運行時間會繪製新的可快取修補程式。 驅動程式應該配置記憶體來儲存快取的數據,而且應該將此數據新增至其修補程式句柄數據表。 由於運行時間先前尚未繪製此修補程式,因此運行時間應該設定 RTPATCHFLAG_HASINFO 旗標,並將指標傳遞至 pInfo 參數中的D3DDDIRECTPATCH_INFO結構。 驅動程式必須檢查RTPATCHFLAG_HASINFO旗標,以確認修補程序資訊是否存在。 如果未指定修補程式資訊,驅動程式應該忽略 drawRectPatch 呼叫,而且不應該為其修補程式句柄數據表中的快取數據配置記憶體。 或者,運行時間可以設定RTPATCHFLAG_HASSEGS旗標,以指出區段資訊是否存在。 不過,如果運行時間未在 pPatch 提供區段資訊,則運行時間應該改用D3DRS_PATCHSEGMENTS轉譯狀態值。
  • 如果在先前呼叫驅動程式的 DrawRectPatch 函式中指定了非零 Handle 值,且已設定RTPATCHFLAG_HASINFO旗標,運行時間會更新修補程式的定義。 運行時間會將指標傳遞至 pInfo 參數中的D3DDDIRECTPATCH_INFO結構,而且驅動程式必須重新計算並重新擷取修補程序資訊。 或者,運行時間可以設定RTPATCHFLAG_HASSEGS旗標,以指出區段資訊是否存在。 不過,如果運行時間未在 pPatch 提供區段資訊,則運行時間應該改用D3DRS_PATCHSEGMENTS轉譯狀態值。
  • 如果先前呼叫驅動程式的 DrawRectPatch 函式中指定了非零 Handle 值,且未設定RTPATCHFLAG_HASINFO旗標,運行時間會重新繪製修補程式。 驅動程式應該使用快取的信息來繪製修補程式。 在此情況下,驅動程式會忽略目前的頂點數據流,並改用快取的資訊。 不過,運行時間仍然可以指定新的區段資訊;因此,驅動程式應該檢查RTPATCHFLAG_HASSEGS旗標,並處理指定的區段資訊,即使它使用快取的修補程式也一樣。
驅動程式會收到通知,以透過D3DRS_DELETERTPATCH轉譯狀態釋放快取的修補程序資訊。 這個轉譯狀態的值是要刪除的修補程式。

要求

要求 價值
最低支援的用戶端 可在 Windows Vista 和更新版本的 Windows作系統中使用。
目標平臺 桌面
標頭 d3dumddi.h (包括 D3dumddi.h)

另請參閱

D3DDDIARG_DRAWRECTPATCH

D3DDDI_DEVICEFUNCS