Frage

Soweit ich weiß, gab es in frühen Qt-Versionen keine Module, sondern separate Klassen mit unterschiedlichen Funktionen, einschließlich grafischer.OpenGL-Unterstützung wurde in qt 1.2 realisiert.QPainter und QImage existierten jedoch in früheren Versionen.Ist es also richtig zu sagen, dass diese Klassen nativ sind (mit anderen Worten, Klassen, die ursprünglich waren)?OpenGL-Klassen – nicht nativ (es ist schließlich ein separater Zweig)?Ich würde gerne eine weitere Entwicklung von Qtopengl als nicht-native und alternative Methode zum Erstellen von 2D-Grafiken in Qt erfahren, den Einfluss dieses Moduls auf die Entwicklung nativer Methoden (zum Erstellen von 2D-Grafiken).

War es hilfreich?

Lösung

ist es also richtig zu sagen, dass diese Klassen nativ sind?

nein, es ist nicht.

Der Grund dafür ist "einheimisch", würde verschiedene Dinge für verschiedene Menschen bedeuten. Es ist die Frage der Interpretation. Sehen Sie Ihre andere Frage, wie verwirrt wir haben.

Inzwischen denke ich, Sie meinen "nicht openGL" 2 / 3D von Native. Das bedeutet wahrscheinlich Software-Rasterisation, um den Display-Treiber direkt durchzusetzen. Also, noch auf der Qt-Ebene, aber ohne die OpenGL-Klassen in qt.

Nun ist dies der Punkt, an dem wir auf QIMAGE und QPAINTER zurückkehren können. Ja, QPainter ist im Wesentlichen die erste Generation für die Rasterisation von Software von der Zeit, in der GPUs nicht so häufig und billig waren, wie heutzutage.

Sie machen im Grunde das Rendering rein mit Softwaretechniken. Das heißt, es ist begrenzter, aber es funktionierte ohne teurer und weniger häufiger Hardwares.

(das waren die Zeiten des Bebens und anderer Softwareprodukte, spaßige Zeiten aus der heutigen Perspektive ...)

Andere Tipps

Wenn Sie mit „nativ“ „hardwareunterstützt“ meinen, dann ist die Aussage nicht mehr ganz so klar.Beachten Sie, dass QPainter Sie können zum Malen verschiedene Mal-Engines verwenden, sodass Sie lediglich eine verwenden können QPainter bedeutet an sich nichts.

Wenn mit „Hardware-unterstützt“ lediglich die Verwendung von mehr als den herkömmlichen Ganzzahl- oder Gleitkomma-Ausführungseinheiten der CPU gemeint ist, dann verwendet die Raster-Paint-Engine tatsächlich verschiedene SIMD-/Vektoroperationen, sofern verfügbar.Die Raster-Paint-Engine ist die Engine, mit der gemalt wird QImage, QPixmap und Nicht-GL QWidget.

Wenn Sie mit „Hardwareunterstützung“ „durch die Grafikkartenhardware gerendert“ meinen, müssen Sie eine OpenGL-Paint-Engine verwenden.Es wird verwendet, wenn Sie auf a malen QGLWidget oder in einem QQuickPaintedItem.Natürlich wird das Gemälde immer noch durch die Software definiert – Geometrie-Setup und Shader sind nur Code!Diese Software läuft auf Hardware, die sie viel schneller ausführen kann als Allzweck-CPUs.

Angesichts der Tatsache, dass die OpenGL-Pipeline mit festen Funktionen heutzutage mehr oder weniger ein historisches Artefakt ist, ist es nicht falsch, dies zu behaupten alle Das Rendern in Qt erfolgt mit reinen Softwaretechniken, aber die Software kann auf einer Allzweck-CPU ausgeführt werden, SIMD/Vektor-Ausführungseinheiten auf einer Allzweck-CPU nutzen oder auf einer GPU laufen.

Es sollte auch gesagt werden, dass dies bei typischen Windows-Treibern heutzutage der Fall ist nicht Beschleunigung des GDI/gdiplus-Zeichnens außer Blits.Daher kann Qt beim Erstellen von 2D-Zeichnungen mit der Raster-Engine, insbesondere auf älteren Windows-Versionen wie XP, schneller sein als plattformnative 2D-Zeichnungen.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top