Condividi tramite


Passaggio tra modalità standard e non standard

Un driver DirectX 9.0 crea la superficie primaria standard per una modalità di visualizzazione standard e una superficie primaria fittizia per la modalità non standard in modo che il runtime possa passare tra le modalità quando necessario. Entrambe le superfici rappresentano la stessa memoria video, ad eccezione di quelle visualizzate in formati diversi. Il driver passa tra le modalità standard e non standard quando viene richiesto un capovolgimento di pagina, come illustrato nella sequenza seguente:

  1. L'applicazione richiede un commutatore in modalità.

    Un'applicazione chiama la funzione ChangeDisplaySettings per modificare la modalità video in una profondità di bit corrispondente. Per la modalità 10:10:10:2, la profondità del bit è di 32 bit per pixel. Per altre informazioni su ChangeDisplaySettings, vedere la documentazione per la Microsoft Windows SDK.

  2. Il driver crea la superficie primaria standard.

    Il runtime chiama la funzione DdCreateSurface del driver per richiedere la creazione della superficie primaria. Questa superficie primaria usa il formato di visualizzazione standard (ad esempio, D3DFMT_A8B8G8R8) e non dispone di buffer indietro.

  3. Il driver crea la catena di superficie primaria fittizia.

    Il runtime chiama la funzione DdCreateSurface del driver per richiedere la creazione della superficie primaria fittizia. Il runtime specifica il bit di funzionalità DDSCAPS2_EXTENDEDFORMATPRIMARY (0x40000000) nel membro dwCaps2 della struttura DDSCAPS2 per questa superficie per indicare che la superficie usa una modalità di visualizzazione non standard, ad esempio D3DFMT_A2R10G10B10. Il runtime specifica anche il bit di funzionalità DDSCAPS_OFFSCREENPLAIN nel membro dwCaps di DDSCAPS2 per indicare che la superficie ha un formato pixel esplicito.

    Poiché questa superficie è destinata a essere solo un altro nome per la superficie primaria esistente, il driver non deve allocare ulteriore memoria video alla superficie.

    Per questa superficie, il runtime specifica anche i DDSCAPS_FLIP e DDSCAPS_COMPLEX bit di funzionalità in dwCaps e un set collegato di buffer indietro in modo analogo al modo in cui il runtime configura una catena di scorrimento della superficie primaria standard. Il driver deve allocare memoria video per questi buffer indietro perché non vengono eseguite ulteriori chiamate alla funzione DdCreateSurface del driver per questi buffer back; ovvero, il runtime crea più di un oggetto di superficie solo per il primario standard.

  4. Il driver capovolge la superficie al formato non standard.

    Mentre il dispositivo di visualizzazione restituisce il formato standard, l'applicazione compone un'immagine non standard in uno di questi buffer back. Una volta che questa immagine è pronta per la visualizzazione, il runtime specifica una delle superfici non standard come destinazione in una chiamata alla funzione DdFlip del driver. Il driver riprogramma quindi il dispositivo visualizzato per restituire il formato non standard.

  5. Verrà eseguita l'applicazione.

    L'applicazione genera ulteriori chiamate alla funzione DdFlip del driver tra i buffer non standard e il driver continua a visualizzare il formato non standard. L'applicazione può anche generare chiamate alla funzione D3dDrawPrimitives2 del driver usando il codice dell'operazione di D3DDP2OP_BLT per copiare il buffer indietro nel buffer anteriore, ma queste chiamate vengono sempre eseguite tra due oggetti di superficie non standard. A meno che il driver supporti il formato non standard in modalità finestra, il driver non elabora blts tra formati di superficie non standard e standard. Per altre informazioni sul caso in modalità finestra, vedere Supporto delle operazioni di Two-Dimensional.

  6. Il driver capovolge nuovamente la superficie in formato standard.

    Quando l'applicazione viene chiusa o ridotta al minimo, il runtime specifica la superficie primaria di formato standard come destinazione in una chiamata alla funzione DdFlip del driver. Il driver riprogramma quindi il dispositivo visualizzato per restituire il formato standard.

  7. Il driver distrugge la superficie fittizia.

    Quando il driver elimina la superficie fittizia, deve assicurarsi che il formato standard sia riprogrammato nel dispositivo di visualizzazione.