QOpenGLPaintDevice Class
Die Klasse „QOpenGLPaintDevice“ ermöglicht das Zeichnen in einen OpenGL-Kontext mithilfe von „ QPainter “. Mehr...
| Header: | #include <QOpenGLPaintDevice> |
| CMake: | find_package(Qt6 REQUIRED COMPONENTS OpenGL) target_link_libraries(mytarget PRIVATE Qt6::OpenGL) |
| qmake: | QT += opengl |
| Erbt von: | QPaintDevice |
- Liste aller Mitglieder, einschließlich geerbter Mitglieder
- QOpenGLPaintDevice ist Teil von „Rendering in 3D“.
Öffentliche Funktionen
| QOpenGLPaintDevice() | |
| QOpenGLPaintDevice(const QSize &size) | |
| QOpenGLPaintDevice(int width, int height) | |
| virtual | ~QOpenGLPaintDevice() |
| QOpenGLContext * | context() const |
| qreal | dotsPerMeterX() const |
| qreal | dotsPerMeterY() const |
| virtual void | ensureActiveTarget() |
| bool | paintFlipped() const |
| void | setDevicePixelRatio(qreal devicePixelRatio) |
| void | setDotsPerMeterX(qreal dpmx) |
| void | setDotsPerMeterY(qreal dpmy) |
| void | setPaintFlipped(bool flipped) |
| void | setSize(const QSize &size) |
| QSize | size() const |
Neu implementierte öffentliche Funktionen
| virtual QPaintEngine * | paintEngine() const override |
Geschützte Funktionen
| QOpenGLPaintDevice(const QOpenGLPaintDevice &) | |
| QOpenGLPaintDevice & | operator=(const QOpenGLPaintDevice &) |
Neu implementierte geschützte Funktionen
| virtual int | metric(QPaintDevice::PaintDeviceMetric metric) const override |
Detaillierte Beschreibung
QOpenGLPaintDevice verwendet den aktuellen QOpenGL-Kontext zum Rendern v QPainter er Zeichenbefehle. Der Kontext wird bei der Erstellung erfasst. Dies erfordert die Unterstützung von OpenGL (ES) 2.0 oder höher.
Leistung
Das `QOpenGLPaintDevice` wird fast immer hardwarebeschleunigt und kann potenziell wesentlich schneller sein als die Software-Rasterisierung. Es reagiert jedoch empfindlicher auf Zustandsänderungen, weshalb die Zeichnungsbefehle sorgfältig angeordnet werden müssen, um eine optimale Leistung zu erzielen.
Anti-Aliasing und Qualität
Das Antialiasing in der OpenGL-Paint-Engine erfolgt mittels Multisampling. Die meisten Hardwarekomponenten benötigen für Multisampling deutlich mehr Speicher, und die daraus resultierende Qualität ist nicht mit der Qualität der Software-Paint-Engine vergleichbar. Die Stärke der OpenGL-Paint-Engine liegt in ihrer Leistung, nicht in ihrer visuellen Rendering-Qualität.
Zustandsänderungen
Beim Zeichnen auf ein `QOpenGLPaintDevice` mithilfe von ` QPainter` wird der Zustand des aktuellen OpenGL-Kontexts von der Paint-Engine entsprechend ihren Anforderungen angepasst. Anwendungen sollten sich nicht darauf verlassen, dass der OpenGL-Zustand auf seine ursprünglichen Bedingungen zurückgesetzt wird, insbesondere was das aktuelle Shader-Programm, den OpenGL-Viewport, die Textur-Einheiten und die Zeichenmodi betrifft.
Kombination von QPainter und OpenGL
Beim kombinierten Einsatz von ` QPainter ` und OpenGL ist es wichtig, ` QPainter ` darüber zu informieren, dass der OpenGL-Zustand möglicherweise durcheinandergebracht wurde, damit es seinen internen Zustand wiederherstellen kann. Dies wird erreicht, indem vor Beginn des OpenGL-Renderings ` QPainter::beginNativePainting()` und nach Abschluss ` QPainter::endNativePainting()` aufgerufen wird.
Sicherheitshinweise
Warnung: Es wird davon ausgegangen, dassalle über `QOpenGLPaintDevice` gerenderten Inhalte vertrauenswürdig sind. Vektorgeometrie, Bilder und andere Zeichnungsdaten werden verarbeitet, möglicherweise verändert und an die zugrunde liegende OpenGL-Implementierung weitergeleitet. Anwendungsentwicklern wird empfohlen, die potenziellen Auswirkungen sorgfältig abzuwägen, bevor sie vom Benutzer bereitgestellte Inhalte rendern (weiterleiten).
Siehe auch OpenGL-Fenster-Beispiel.
Dokumentation der Mitgliedsfunktionen
QOpenGLPaintDevice::QOpenGLPaintDevice()
Erstellt ein QOpenGLPaintDevice.
Das QOpenGLPaintDevice gilt nur für den aktuellen Kontext.
Siehe auch ` QOpenGLContext::currentContext()`.
[explicit] QOpenGLPaintDevice::QOpenGLPaintDevice(const QSize &size)
Erstellt ein `QOpenGLPaintDevice` mit dem angegebenen ` size`.
Das `QOpenGLPaintDevice` gilt nur für den aktuellen Kontext.
Siehe auch QOpenGLContext::currentContext().
QOpenGLPaintDevice::QOpenGLPaintDevice(int width, int height)
Erstellt ein `QOpenGLPaintDevice` mit den angegebenen ` width ` und ` height`.
Das `QOpenGLPaintDevice` gilt nur für den aktuellen Kontext.
Siehe auch QOpenGLContext::currentContext().
[protected delete] QOpenGLPaintDevice::QOpenGLPaintDevice(const QOpenGLPaintDevice &)
Erstellt eine Instanz von „ QOpenGLPaintDevice “ durch Kopieren. Diese Funktion wurde gelöscht.
[virtual noexcept] QOpenGLPaintDevice::~QOpenGLPaintDevice()
Zerstört die „ QOpenGLPaintDevice “.
QOpenGLContext *QOpenGLPaintDevice::context() const
Gibt den OpenGL-Kontext zurück, der dem Zeichen-Gerät zugeordnet ist.
qreal QOpenGLPaintDevice::dotsPerMeterX() const
Gibt die Anzahl der Pixel pro Meter in horizontaler Richtung zurück.
Siehe auch ` setDotsPerMeterX()`.
qreal QOpenGLPaintDevice::dotsPerMeterY() const
Gibt die Anzahl der Pixel pro Meter in vertikaler Richtung zurück.
Siehe auch „ setDotsPerMeterY()“.
[virtual] void QOpenGLPaintDevice::ensureActiveTarget()
Diese virtuelle Methode wird als Callback bereitgestellt, um die Neuzuweisung eines Ziel-Framebuffer-Objekts oder -Kontexts zu ermöglichen, wenn verschiedene „ QOpenGLPaintDevice “-Instanzen abwechselnd Zeichenaufrufe ausführen.
beginNativePainting() löst diese Methode ebenfalls aus.
Die Standardimplementierung führt keine Aktion aus.
[override virtual protected] int QOpenGLPaintDevice::metric(QPaintDevice::PaintDeviceMetric metric) const
Implementiert neu: ` QPaintDevice::metric` (QPaintDevice::PaintDeviceMetric metric) const.
[override virtual] QPaintEngine *QOpenGLPaintDevice::paintEngine() const
Implementiert neu: ` QPaintDevice::paintEngine()` const.
bool QOpenGLPaintDevice::paintFlipped() const
Gibt „ true “ zurück, wenn das Bild um die Y-Achse gespiegelt ist.
Siehe auch setPaintFlipped().
void QOpenGLPaintDevice::setDevicePixelRatio(qreal devicePixelRatio)
Legt das Gerätepixelverhältnis für das Zeichen-Gerät auf „ devicePixelRatio “ fest.
void QOpenGLPaintDevice::setDotsPerMeterX(qreal dpmx)
Legt die Anzahl der Pixel pro Meter in horizontaler Richtung auf „ dpmx “ fest.
Siehe auch dotsPerMeterX().
void QOpenGLPaintDevice::setDotsPerMeterY(qreal dpmy)
Legt die Anzahl der Pixel pro Meter in vertikaler Richtung auf dpmy fest.
Siehe auch „ dotsPerMeterY()“.
void QOpenGLPaintDevice::setPaintFlipped(bool flipped)
Legt fest, ob die Darstellung um die Y-Achse gespiegelt werden soll oder nicht: flipped.
Siehe auch paintFlipped().
void QOpenGLPaintDevice::setSize(const QSize &size)
Legt die Pixelgröße des Zeichen-Geräts auf „ size “ fest.
Siehe auch size().
QSize QOpenGLPaintDevice::size() const
Gibt die Pixelgröße des Zeichen-Geräts zurück.
Siehe auch setSize().
[protected delete] QOpenGLPaintDevice &QOpenGLPaintDevice::operator=(const QOpenGLPaintDevice &)
other Weist der Instanz „ QOpenGLPaintDevice “ den Wert „ “ zu. Diese Funktion wird gelöscht.
© 2026 The Qt Company Ltd. Documentation contributions included herein are the copyrights of their respective owners. The documentation provided herein is licensed under the terms of the GNU Free Documentation License version 1.3 as published by the Free Software Foundation. Qt and respective logos are trademarks of The Qt Company Ltd. in Finland and/or other countries worldwide. All other trademarks are property of their respective owners.