функция обратного вызова PFND3DDDI_SETDISPLAYMODECB (d3dumddi.h)
Функция pfnSetDisplayModeCb задает выделение, используемое для сканирования на дисплее.
Синтаксис
PFND3DDDI_SETDISPLAYMODECB Pfnd3dddiSetdisplaymodecb;
HRESULT Pfnd3dddiSetdisplaymodecb(
HANDLE hDevice,
D3DDDICB_SETDISPLAYMODE *unnamedParam2
)
{...}
Параметры
hDevice
Дескриптор устройства отображения (графический контекст).
unnamedParam2
pData [in, out]
Указатель на структуру D3DDDICB_SETDISPLAYMODE , описывающую выделение, используемое для сканирования.
Возвращаемое значение
pfnSetDisplayModeCb возвращает одно из следующих значений:
Код возврата | Описание |
---|---|
S_OK | Режим отображения успешно настроен. |
E_INVALIDARG | Параметры были проверены и определены как неверные. |
D3DDDIERR_INCOMPATIBLEPRIVATEFORMAT | Драйвер отображения пользовательского режима должен преобразовывать формат поверхности, связанной с выделением, указанным элементом hPrimaryAllocation D3DDDICB_SETDISPLAYMODE , в атрибут format, который указывает PrivateDriverFormatAttributemember D3DDDICB_SETDISPLAYMODE. Затем драйвер должен снова вызвать pfnSetDisplayModeCb. Драйвер может выделить новое выделение, выполнить преобразование битового блока передачи (bitblt) из старой первичной поверхности в новую, а затем уничтожить старый первичный, если драйвер использует новый маркер выделения для этого выделения для всех последующих операций. Драйвер должен повторять этот процесс, пока pfnSetDisplayModeCb не вернет другое возвращаемое значение. |
Эта функция также может возвращать другие значения HRESULT.
Комментарии
После того как среда выполнения Microsoft Direct3D вызовет функцию SetDisplayMode или SetDisplayModeDXGI драйвера пользовательского режима, чтобы задать основную поверхность для сканирования на дисплее, драйвер отображения пользовательского режима вызывает функцию pfnSetDisplayModeCb , чтобы задать базовое основное выделение, используемое для сканирования.
Direct3D версии 11 Примечание. Дополнительные сведения о том, как драйвер вызывает pfnSetDisplayModeCb, см. в разделе Изменения с Direct3D 10.
Примеры
В следующем примере кода показано, как задать выделение для сканирования на дисплее.
HRESULT CD3DContext::SetDisplayMode(CONST D3DDDIARG_SETDISPLAYMODE* pSetDisplayMode) {
DWORD dwSrcSurf = ((DWORD)(DWORD_PTR)pSetDisplayMode->hResource) + pSetDisplayMode->SubResourceIndex;
HRESULT hr;
// Timestamp the source surface
m_RTbl[dwSrcSurf].m_qwBatch = m_qwBatch;
// Send the presentation request to the display miniport driver
D3DDDICB_SETDISPLAYMODE SetDisplayModeCBData = {0};
SetDisplayModeCBData.hPrimaryAllocation = R200GetSurfaceAllocHandle(m_pR200Ctx,
dwSrcSurf);
hr = m_d3dCallbacks.pfnSetDisplayModeCb(m_hD3D, &SetDisplayModeCBData);
return (hr);
}
Требования
Требование | Значение |
---|---|
Минимальная версия клиента | Доступно в Windows Vista и более поздних версиях операционных систем Windows. |
Целевая платформа | Персональный компьютер |
Верхняя часть | d3dumddi.h (включая D3dumddi.h) |