PFND3DDDI_PRESENT回呼函式 (d3dumddi.h)
Present 函式會通知使用者模式顯示驅動程式應用程式已完成轉譯,並要求驅動程式藉由複製或翻轉或驅動程式執行色彩填滿作業來顯示來源介面。
語法
PFND3DDDI_PRESENT Pfnd3dddiPresent;
HRESULT Pfnd3dddiPresent(
HANDLE hDevice,
const D3DDDIARG_PRESENT *unnamedParam2
)
{...}
參數
hDevice
顯示裝置的句柄 (圖形內容) 。
unnamedParam2
pData [in]
描述要顯示之資源的 D3DDDIARG_PRESENT 結構的指標。
傳回值
Present 會傳回下列其中一個值:
傳回碼 | 描述 |
---|---|
S_OK | 已成功顯示資源。 |
E_OUTOFMEMORY | 存在 無法配置所需的記憶體,使其完成。 |
備註
Microsoft Direct3D 執行時間會呼叫使用者模式顯示驅動程式的 Present 函式,以通知使用者模式顯示驅動程式應用程式已完成轉譯,並要求驅動程式顯示來源表面或驅動程式執行色彩填滿作業。 如果 pData 參數指向之D3DDDIARG_PRESENT結構的 hSrcResource 成員為非 NULL,Present 會要求使用者模式顯示驅動程式在畫面上顯示新內容;如果 hSrcResource 為 NULL,Present 會要求使用者模式顯示驅動程式對螢幕執行色彩填滿作業。
如果D3DDDIARG_PRESENT結構的 hDstResource 成員為 NULL,則目的地介面未知。 此外,目的地介面和裁剪矩形清單會在核心模式中決定,再透過 DMA 將硬體命令數據流傳送至圖形處理器。
因此,使用者模式顯示驅動程式無法產生硬體指示來執行目前作業。 這些硬體指示必須由顯示器迷你埠驅動程序產生。 不過,當D3DDDIARG_PRESENT的 hSrcResource 成員為非 NULL 時,使用者模式顯示驅動程式必須衍生來源介面的配置句柄,並將此句柄插入呼叫 pfnPresentCb 函式的 hSrcAllocation 成員中D3DDDICB_PRESENT結構的 hSrcAllocation 成員。 然後,顯示迷你埠驅動程式可以成功產生硬體指示。 使用者模式顯示驅動程式通常會從 D3DDDIARG_PRESENT 結構中的資源資訊衍生配置句柄。
如果D3DDDIARG_PRESENT的 hDstResource 成員為非 NULL,則已知存在的目的介面,而且使用者模式顯示驅動程式必須填入具有對應配置句柄之 D3DDDICB_PRESENT的 hDstAllocation 成員。
如果使用者模式顯示驅動程式公開的 DDI 版本小於 0x0000000C (驅動程式會在呼叫驅動程式 OpenAdapter 函式) 中的 D3D10DDIARG_OPENADAPTER 結構的 DriverVersion 成員中傳回此值,Direct3D 運行時間會先呼叫使用者模式顯示驅動程式的 Flush 函式,在運行時間呼叫使用者模式顯示驅動程式的 Present 函式之前,先在命令緩衝區中提交任何未完成的硬體命令。 如此一來,使用者模式顯示驅動程式的 Present 函式會以轉譯作業串行化, (也就是 呼叫 pfnRenderCb 函式) 。 如果使用者模式顯示驅動程式公開0x0000000C或更新版本的 DDI 版本,而且呼叫的應用程式會在視窗模式中執行,運行時間也會在呼叫 Present 之前呼叫 Flush。 如果使用者模式顯示驅動程式公開0x0000000C或更新版本的 DDI 版本,而且呼叫的應用程式會在全螢幕模式中執行,運行時間將不會在呼叫 Present 之前呼叫 Flush。 此行為可讓實作自己的線程的驅動程式將目前呼叫排入佇列。 公開 DDI 版本的0x0000000C或更新版本的驅動程式必須呼叫 pfnRenderCb ,才能在驅動程式呼叫 pfnPresentCb 函式之前,於內部排清任何未完成的命令緩衝區。
規格需求
需求 | 值 |
---|---|
最低支援的用戶端 | 可在 Windows Vista 和更新版本的 Windows 作業系統中使用。 |
目標平台 | 桌面 |
標頭 | d3dumddi.h (包含 D3dumddi.h) |