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


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

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

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

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