Inizializzazione del driver Direct3D

Quando la funzione DrvGetDirectDrawInfo del driver viene chiamata dal runtime di Microsoft DirectDraw per inizializzare il supporto directDraw, il driver deve eseguire le operazioni seguenti per indicare le funzionalità di Microsoft Direct3D:

  • Impostare il flag DDCAPS_3D nel membro ddCaps.dwCaps della struttura DD_HALINFO per indicare che l'hardware del driver ha accelerazione 3D.

  • Impostare i flag DDSCAPS_Xxx nel membro ddCaps.ddsCaps della struttura DD_HALINFO che descrivono le funzionalità 3D della superficie di memoria video di un driver. I flag sono elencati nella tabella seguente.

    Flag Significato

    DDSCAPS_3DDEVICE

    Indica che la superficie di un driver può essere usata come destinazione per il rendering 3D.

    DDSCAPS_TEXTURE

    Indica che la superficie di un driver può essere usata per il mapping delle trame 3D.

    DDSCAPS_ZBUFFER

    Indica che la superficie di un driver può essere usata come buffer Z.

  • Impostare il membro GetDriverInfo della struttura DD_HALINFO in modo che punti al callback DdGetDriverInfo del driver. Il driver deve anche impostare il flag DDHALINFO_GETDRIVERINFOSET nel membro dwFlags della struttura DD_HALINFO per indicare che ha implementato il callback DdGetDriverInfo .

  • Allocare e inizializzare i membri della struttura D3DHAL_CALLBACKS e restituire questa struttura nel membro lpD3DHALCallbacks della struttura DD_HALINFO.

  • Allocare e inizializzare i membri della struttura D3DHAL_GLOBALDRIVERDATA e restituire questa struttura nel membro lpD3DGlobalDriverData della struttura DD_HALINFO.

Per indicare che il driver è in grado di usare Microsoft DirectX 7.0, eseguire le operazioni seguenti:

  • Includere il flag D3DDEVCAPS_DRAWPRIMITIVES2EX nel membro dwDevCaps della struttura D3DDEVICEDESC_V1 segnalata durante l'inizializzazione del driver Direct3D di Microsoft.

  • Rispondere al GUID_Miscellaneous2Callbacks GUID nel callback DdGetDriverInfo impostando i membri GetDriverState, CreateSurfaceEx e DestroyDDLocal della struttura DD_MISCELLANEOUS2CALLBACKS . Questi valori sono impostati in modo che puntino rispettivamente ai callback appropriati per il driver Direct3D e ORed nel membro dwFlags con i bit di DDHAL_MISC2CB32_CREATESURFACEEX, DDHAL_MISC2CB32_GETDRIVERSTATE e DDHAL_MISC2CB32_DESTROYDDLOCAL.

Dopo la restituzione di DrvGetDirectDrawInfo , GDI chiama il callback DdGetDriverInfo del driver più volte per completare l'inizializzazione del driver. Il callback DdGetDriverInfo deve rispondere ai GUID seguenti per supportare Direct3D:

GUID_D3DCallbacks3
Il driver deve allocare e inizializzare i membri della struttura D3DHAL_CALLBACKS3 e restituire questa struttura nel membro lpvData della struttura DD_GETDRIVERINFODATA .

GUID_Miscellaneous2Callbacks
Il driver deve allocare e inizializzare i membri della struttura DD_MISCELLANEOUS2CALLBACKS e restituire questa struttura nel membro lpvData della struttura DD_GETDRIVERINFODATA.

GUID_D3DExtendedCaps
Il driver deve allocare e inizializzare i membri appropriati della struttura D3DHAL_D3DEXTENDEDCAPS e restituire questa struttura nel membro lpvData della struttura DD_GETDRIVERINFODATA.

GUID_ZPixelFormats
Il driver deve allocare e inizializzare i membri appropriati di una struttura DDPIXELFORMAT per ogni formato di buffer Z supportato dal driver e restituire queste strutture nel membro lpvData della struttura DD_GETDRIVERINFODATA. Il driver deve rispondere a questo GUID se supporta il codice dell'operazione di D3DDP2OP_CLEAR nell'implementazione di D3dDrawPrimitives2.

GUID_D3DParseUnknownCommandCallback
Il driver deve archiviare il puntatore al callback D3DParseUnknownCommand del runtime Direct3D . Il puntatore viene passato al driver nel membro lpvData della struttura DD_GETDRIVERINFODATA. Il callback D3dDrawPrimitives2 del driver chiama il callback D3DParseUnknownCommand per analizzare i comandi che il driver non riconosce.

Per altre informazioni, vedere Inizializzazione del driver DirectDraw.