Поделиться через


Использование функций обратного вызова State-Refresh

Драйвер отображения в пользовательском режиме может использовать среду выполнения Direct3D версии 10 State-Refresh функции обратного вызова для создания драйвера без отслеживания состояния или создания данных в виде заготовки буфера команд.

Среда выполнения Direct3D предоставляет указатели на функции обратного вызова обновления состояния в структуре D3D10DDI_CORELAYER_DEVICECALLBACKS, на которую указывает элемент pUMCallbackструктуры D3D10DDIARG_CREATEDEVICE в вызове функции CreateDevice(D3D10).

Драйвер отображения пользовательского режима может вызывать, например, функцию обратного вызова обновления состояния pfnStateIaIndexBufCb , в то время как драйвер находится в пределах вызова функции IaSetIndexBuffer драйвера. Этот вызов вполне возможен, особенно потому, что драйвер отображения пользовательского режима может использовать функцию обратного вызова pfnStateIaIndexBufCb для создания заготовки, а вызов IaSetIndexBuffer может исчерпать размер буфера команд и вызвать очистку. В такой ситуации вызов pfnStateIaIndexBufCb передает те же "новые" сведения о привязке, что и исходный вызов IaSetIndexBuffer. Такая ситуация приводит к более оптимальному варианту.