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


функция обратного вызова PFND3DDDI_PRESENTCB (d3dumddi.h)

Функция pfnPresentCb копирует содержимое из исходного выделения.

Синтаксис

PFND3DDDI_PRESENTCB Pfnd3dddiPresentcb;

HRESULT Pfnd3dddiPresentcb(
  HANDLE hDevice,
  D3DDDICB_PRESENT *unnamedParam2
)
{...}

Параметры

hDevice

Дескриптор устройства отображения (графический контекст).

unnamedParam2

pData [in]

Указатель на структуру D3DDDICB_PRESENT , описывающую выделение исходного содержимого.

Возвращаемое значение

pfnPresentCb возвращает одно из следующих значений:

Код возврата Описание
S_OK Содержимое успешно скопировано.
E_OUTOFMEMORY Не удалось завершить pfnPresentCb из-за нехватки памяти.
E_INVALIDARG Параметры были проверены и определены как неверные.

Эта функция также может возвращать другие значения HRESULT.

Комментарии

Драйвер отображения пользовательского режима задает элемент hContextструктуры D3DDDICB_PRESENT , на который указывает параметр pData , в контекст, созданный ранее путем вызова функции pfnCreateContextCb . Драйвер отображения пользовательского режима должен создать по крайней мере один контекст, когда среда выполнения Microsoft Direct3D вызывает функцию CreateDevice или CreateDevice(D3D10) драйвера для создания устройства. Среда выполнения Direct3D отправляет текущую операцию в созданный контекст.

Direct3D версии 11 Примечание. Дополнительные сведения о том, как драйвер вызывает pfnPresentCb, см. в разделе Изменения в Direct3D 10.

Примеры

В следующем примере кода показано, как заполнить область назначения цветом.

    HRESULT hr=S_OK;
    // A color-fill request that does not have a source surface
    D3DDDICB_PRESENT    PresentCBData = {0};

    PresentCBData.hContext = m_sContexts[MULTI_ENGINE_NODE_3D].hContext;
    PresentCBData.hSrcAllocation = NULL;

    if (pPresent->hDstResource) {
        DWORD   dwDstSurf = ((DWORD)(DWORD_PTR)pPresent->hDstResource) + pPresent->DstSubResourceIndex;
        _ASSERT(dwDstSurf < m_RTbl.Size());
        m_RTbl[dwDstSurf].m_qwBatch = m_qwBatch;
        PresentCBData.hDstAllocation = R200GetSurfaceAllocHandle(m_pR200Ctx, dwDstSurf);
    }

    hr = m_d3dCallbacks.pfnPresentCb(m_hD3D, &PresentCBData);

    return hr;

Требования

Требование Значение
Минимальная версия клиента Доступно в Windows Vista и более поздних версиях операционных систем Windows.
Целевая платформа Персональный компьютер
Верхняя часть d3dumddi.h (включая D3dumddi.h)

См. также раздел

CreateDevice

CreateDevice(D3D10)

D3DDDICB_PRESENT

D3DDDI_DEVICECALLBACKS

pfnCreateContextCb