Non riesco a ottenere una risposta definitiva tramite ricerca. Le accelerazioni Win32 accelerano l'hardware (GDI, non GDI +). Non so come queste funzioni si interfacciano con il driver grafico. Esiste una chiamata di funzione per verificare questa funzionalità, ad esempio? GetCaps? per un dispositivo grafico specifico (dispositivo grafico win32) per vedere se queste funzioni ricevono l'accelerazione hardware?Le funzioni GDI accelerano l'hardware BitBlt e StretchBlt in Win32?
risposta
Secondo this, GDI è solo hardware accelerato su Windows 7 in poi. This elenca come specificare quali operazioni devono essere accelerate dall'hardware. incluso nella lista è BitBlt
e StretchBlt
, quindi sì, sono accelerati hardware, ma è necessario disporre di un sistema che lo supporta, e devi abilitarlo.
Se le operazioni GDI sono hardware accelerate dipende dal driver ma tutte le versioni di Windows tranne Vista * lo supportano.
- Vista ha aggiunto un nuovo modello di driver denominato Windows Display Driver Model (WDDM)
- WDDM v1.1 è stato aggiunto in Windows 7, questo incluso il ritorno di GDI hardware acceleration.
*: È possibile utilizzare un driver XP su Vista, cosa succede a GDI in quella configurazione che non conosco. (Forse è possibile rilevare questo verificando per D3DCAPS2_CANSHARERESOURCE?) Modifica: Secondo this, funziona con XPDM.
Ci sono alcuni kernel caps che è possibile controllare su Win7 ma non so se è possibile controllare in usermode.
Nota: una cosa che sembra impedire l'accelerazione su Win7 in base ai miei test è l'utilizzo di SetStretchBltMode (dc, HALFTONE) per abilitare il filtro lineare durante lo stiramento (non sono sicuro che sia stato accelerato su XP). – Suma
@Suma Sì, e mi chiedo perché l'hardware funziona molto bene. In effetti è lì dove il guadagno sarebbe significativo. –
- 1. È possibile eseguire BitBlt direttamente da una bitmap GDI +?
- 2. Le funzioni LoadLibrary, FreeLibrary e GetModuleHandle Win32 sono thread-safe?
- 3. Disegno Rettangolo blu leggermente trasparente in Nativo Win32 GDI
- 4. BitBlt in Qt4?
- 5. Come aumentare le prestazioni su DrawImage di GDI (non ridimensionato)?
- 6. GDI + doppio buffering in C++
- 7. API Win32 per enumerare le funzioni di esportazione dll?
- 8. Interlinea GDI in Delphi?
- 9. Qual è la differenza tra GDI e GDI +?
- 10. Qt: alternativa a BitBlt in Windows Qt5
- 11. Quando si smaltiscono le risorse GDI +?
- 12. Chiamate API Mocking e Win32
- 13. Quali sono le differenze tra RedrawWindow e UpdateWindow in Win32?
- 14. Grafica GDI +/Direct2D e dimensione mondiale
- 15. In che modo GDI + funziona così velocemente?
- 16. Cosa fa il thread in background GDI +?
- 17. Voglio sapere quali funzioni sono disponibili da un Win32.DLL
- 18. Ciclo di gioco in Win32 API
- 19. Come si può scorrere legittimamente con GDI +?
- 20. Come inserire automaticamente le dichiarazioni API Win32 in C#?
- 21. C# GDI Algoritmo di rilevamento degli spazi bianchi GDI
- 22. Quale sarebbe un'alternativa di qualità superiore a StretchBlt per disegnare un HBITMAP?
- 23. Double Buffering? Win32 C++
- 24. Come mescolare std :: string con le funzioni Win32 che accettano i buffer char []?
- 25. Che cos'è il livello inferiore su Windows: la libreria C o le funzioni API Win32 corrispondenti?
- 26. Disegno di molti rettangoli in GDI +
- 27. Come utilizzare le API win32 con python?
- 28. jQuery combina le funzioni .ready e .resize
- 29. un errore generico verificato in GDI +
- 30. Salvare le funzioni in phpdoc
Principalmente giusto. GDI è stato accelerato hardware per un tempo molto lungo. Windows Vista era solo un momento oscuro per GDI; ha perso la sua accelerazione hardware e gli utenti si sono lamentati incessantemente. Di conseguenza (o forse era il piano da sempre), Windows 7 ha riportato l'accelerazione hardware a GDI e tutto andava bene con l'universo. –
Aero, non Vista. –