Come funziona GDI / + e può essere sostituito con il mio codice?

3

Su wikipedia si dice che GDI è un'API e un componente del sistema operativo principale responsabile della rappresentazione di oggetti grafici e della loro trasmissione ai dispositivi di output.

Non sto trovando molto su ciò che GDI + effettivamente fa quindi mi chiedo, GDI + è sostituibile con framework gui come wxWidgets e GTK + o questi framework sono piuttosto basati su GDI +?

Quando si disegna sullo schermo con GDI + sembra assicurarsi che uno non disegni al di fuori della finestra dell'applicazione. In realtà è GDI + a farlo e se no, che cos'è? Se è GDI, allora non tutto deve passare attraverso GDI + per promettere questa funzionalità e non lasciare che le applicazioni dipingino dove vogliono?

Da dove viene il framebuffer in tutto questo? Immagino che qualunque cosa controlli le trasformate di coordinate controlla anche il framebuffer. Tuttavia sembra che le applicazioni abbiano molto controllo sui framebuffer e su come usarli. Vedo che OpenGL ha diversi tipi di framebuffer e funzioni per generare framebuffer, cancellandoli, ecc. E sto leggendo che sono memorizzati nella memoria video. Immagino che i framework GUI che non sono così pesantemente coinvolti con la GPU non li memorizzino nella memoria video. Quindi, come funzionano e interagiscono queste cose con le trasformazioni?

    
posta Dimension 13.07.2013 - 06:05
fonte

1 risposta

4

1) GDI + è la libreria di Windows che gestisce il disegno dello schermo di basso livello ... linee, copia bitmap, quel tipo di cose. Non lo sostituisci. Altri framework GUI su Windows sono implementati su GDI. GDI + stesso è teoricamente implementato su DirectX.

2) GDI conosce le aree di ritaglio, ma non le finestre o i loro bordi; quando stai disegnando in una finestra, parla con la libreria USER, che conosce le posizioni della finestra, per capire l'area di ritaglio appropriata. Qui c'è un certo grado di sfocatura delle responsabilità; alcune funzioni che "razionalmente" appartengono a USER sono in GDI per prestazioni o motivi storici.

3) Un frame buffer può essere un bitmap nella RAM che può essere eventualmente copiato nella memoria video, oppure può essere una memoria video direttamente mappata nello spazio degli indirizzi della CPU. Se stai usando GDI, non pensare ai frame buffer. Se si utilizza OpenGL o DirectX, si utilizzano i buffer di frame forniti da tali interfacce.

    
risposta data 13.07.2013 - 07:12
fonte

Leggi altre domande sui tag