Domanda

Come ho capito, non c'erano moduli nelle prime versioni di Qt, c'erano classi separate con funzioni diverse, inclusa la grafica.Il supporto Opengl è stato realizzato in qt 1.2.Tuttavia, QPainter, QImage esisteva nelle prime versioni.Quindi, è corretto dire che queste classi sono native (in altre parole, classi, che erano primordiali);classi opengl-non native (è un ramo separste, dopo tutto)?Mi piacerebbe imparare un'ulteriore evoluzione di Qtopengl come modo non nativo e alternativo per la creazione di grafica 2D ih Qt, influenza di questo modulo sull'evoluzione dei metodi nativi (per la creazione di grafica 2D).

È stato utile?

Soluzione

Quindi, è corretto dire che queste classi sono native?

No, non lo e'.

La ragione di ciò è "nativo" significherebbe cose diverse per persone diverse.È la questione dell'interpretazione.Vedi la tua altra domanda quanto siamo confusi.

A questo punto, penso che tu intenda "non-opengl" 2/3D per nativo.Ciò probabilmente significa che la rasterizzazione del software anziché passare direttamente attraverso il driver del display.Quindi, ancora a livello Qt, ma senza le classi opengl in Qt.

Ora, questo è il punto in cui possiamo tornare a QImage e QPainter.Sì, QPainter è fondamentalmente la generazione iniziale per la rasterizzazione del software dai tempi in cui le GPU non erano così comuni ed economiche come in questi giorni.

Stanno fondamentalmente facendo il rendering puramente con tecniche software.Cioè, è più limitato, ma ha funzionato senza hardware più costosi e meno comuni in giro.

(Quelli erano i tempi di Quake e di altri prodotti software, tempi divertenti guardandolo dal punto di vista di oggi ...)

Altri suggerimenti

Se per " nativo "intendi" hardware assistito", allora la linea non è più così chiara.Si noti che QPainter può usare vari motori di vernice per fare la pittura, quindi semplicemente usando un QPainter non significa nulla di per sé.

Se per "hardware assisted" si intende semplicemente utilizzare qualcosa di più delle unità di esecuzione in virgola mobile o in virgola mobile legacy della CPU, allora sì, il motore di verniciatura raster utilizza varie operazioni SIMD/vettoriali laddove disponibili.Il motore di vernice raster è il motore utilizzato per dipingere su QImage, QPixmap e non-GL QWidget.

Se per " assistenza hardware "si intende" reso dall'hardware della scheda grafica", è necessario utilizzare un motore paint OpenGL.È usato quando dipingi su un QGLWidget o in un QQuickPaintedItem.Naturalmente il dipinto è ancora definito dal software-la configurazione della geometria e gli shader sono solo codice!Questo software funziona su hardware in grado di eseguirlo molto più velocemente di quanto possano fare le CPU general purpose.

Dato che la pipeline OpenGL a funzione fissa è più o meno un artefatto storico in questi giorni, non è errato affermare che tutto il rendering in Qt viene eseguito utilizzando tecniche puramente software, ma il software può essere eseguito su una CPU general-purpose, o sfruttare le unità di esecuzione SIMD/vector su una CPU general-purpose, o può essere eseguito su una GPU.

Va anche detto che i tipici driver di Windows in questi giorni fanno non accelerare GDI / gdiplus disegno diverso blits.Pertanto, quando si esegue il disegno 2D utilizzando il motore raster, specialmente su versioni precedenti di Windows come XP, Qt può essere più veloce del disegno 2D nativo della piattaforma.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top