QOpenGLPaintDevice Class

Die Klasse QOpenGLPaintDevice ermöglicht das Malen in einem OpenGL-Kontext mit QPainter. Mehr...

Kopfzeile: #include <QOpenGLPaintDevice>
CMake: find_package(Qt6 REQUIRED COMPONENTS OpenGL)
target_link_libraries(mytarget PRIVATE Qt6::OpenGL)
qmake: QT += opengl
Vererbungen: QPaintDevice

Ö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

Reimplementierte öffentliche Funktionen

virtual QPaintEngine *paintEngine() const override

Reimplementierte geschützte Funktionen

virtual int metric(QPaintDevice::PaintDeviceMetric metric) const override

Detaillierte Beschreibung

Das QOpenGLPaintDevice verwendet den aktuellen QOpenGL-Kontext zum Rendern von QPainter Zeichenbefehlen. Der Kontext wird bei der Erstellung erfasst. Es benötigt Unterstützung für OpenGL (ES) 2.0 oder höher.

Leistung

Das QOpenGLPaintDevice ist fast immer hardwarebeschleunigt und hat das Potenzial, viel schneller als Software-Rasterung zu sein. Allerdings reagiert es empfindlicher auf Zustandsänderungen und erfordert daher eine sorgfältige Reihenfolge der Zeichenbefehle, um eine optimale Leistung zu erzielen.

Antialiasing und Qualität

Antialiasing in der OpenGL-Malmaschine erfolgt durch Multisampling. Die meiste Hardware benötigt für Multisampling deutlich mehr Speicher und die 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 Malen auf ein QOpenGLPaintDevice unter Verwendung von QPainter wird der Zustand des aktuellen OpenGL-Kontextes von der Paint-Engine geändert, um ihre Bedürfnisse zu reflektieren. Anwendungen sollten sich nicht darauf verlassen, dass der OpenGL-Zustand auf seine ursprünglichen Bedingungen zurückgesetzt wird, insbesondere das aktuelle Shader-Programm, OpenGL-Viewport, Textureinheiten und Zeichenmodi.

Mischen von QPainter und OpenGL

Bei der Vermischung von QPainter und OpenGL ist es wichtig, QPainter zu benachrichtigen, dass der OpenGL-Zustand möglicherweise durcheinander gebracht wurde, damit er seinen internen Zustand wiederherstellen kann. Dies wird durch den Aufruf von QPainter::beginNativePainting() vor dem Start des OpenGL-Renderings und durch den Aufruf von QPainter::endNativePainting() nach dessen Beendigung erreicht.

Siehe auch OpenGL Fenster Beispiel.

Dokumentation der Mitgliedsfunktionen

QOpenGLPaintDevice::QOpenGLPaintDevice()

Konstruiert ein QOpenGLPaintDevice.

Das QOpenGLPaintDevice ist nur für den aktuellen Kontext gültig.

Siehe auch QOpenGLContext::currentContext().

[explicit] QOpenGLPaintDevice::QOpenGLPaintDevice(const QSize &size)

Konstruiert ein QOpenGLPaintDevice mit dem angegebenen size.

Das QOpenGLPaintDevice ist nur für den aktuellen Kontext gültig.

Siehe auch QOpenGLContext::currentContext().

QOpenGLPaintDevice::QOpenGLPaintDevice(int width, int height)

Konstruiert ein QOpenGLPaintDevice mit den angegebenen width und height.

Das QOpenGLPaintDevice ist nur für den aktuellen Kontext gültig.

Siehe auch QOpenGLContext::currentContext().

[virtual noexcept] QOpenGLPaintDevice::~QOpenGLPaintDevice()

Zerstört die QOpenGLPaintDevice.

QOpenGLContext *QOpenGLPaintDevice::context() const

Gibt den OpenGL-Kontext zurück, der mit dem Malgerät verbunden ist.

qreal QOpenGLPaintDevice::dotsPerMeterX() const

Gibt die Anzahl der Pixel pro horizontalem Meter zurück.

Siehe auch setDotsPerMeterX().

qreal QOpenGLPaintDevice::dotsPerMeterY() const

Gibt die Anzahl der Pixel pro Meter vertikal zurück.

Siehe auch setDotsPerMeterY().

[virtual] void QOpenGLPaintDevice::ensureActiveTarget()

Diese virtuelle Methode wird als Callback zur Verfügung gestellt, um eine erneute Bindung eines Ziel-Frame-Buffer-Objekts oder -Kontexts zu ermöglichen, wenn verschiedene QOpenGLPaintDevice -Instanzen abwechselnd Zeichenaufrufe tätigen.

beginNativePainting() wird diese Methode ebenfalls auslösen.

Die Standardimplementierung tut nichts.

[override virtual protected] int QOpenGLPaintDevice::metric(QPaintDevice::PaintDeviceMetric metric) const

Reimplements: QPaintDevice::metric(QPaintDevice::PaintDeviceMetric metric) const.

[override virtual] QPaintEngine *QOpenGLPaintDevice::paintEngine() const

Reimplements: QPaintDevice::paintEngine() const.

bool QOpenGLPaintDevice::paintFlipped() const

Gibt true zurück, wenn das Bild um die Y-Achse gespiegelt wird.

Siehe auch setPaintFlipped().

void QOpenGLPaintDevice::setDevicePixelRatio(qreal devicePixelRatio)

Setzt das Gerätepixelverhältnis für das Malgerät auf devicePixelRatio.

void QOpenGLPaintDevice::setDotsPerMeterX(qreal dpmx)

Setzt die Anzahl der Pixel pro Meter horizontal auf dpmx.

Siehe auch dotsPerMeterX().

void QOpenGLPaintDevice::setDotsPerMeterY(qreal dpmy)

Setzt die Anzahl der Pixel pro Meter vertikal auf dpmy.

Siehe auch dotsPerMeterY().

void QOpenGLPaintDevice::setPaintFlipped(bool flipped)

Legt fest, ob das Bild um die Y-Achse gespiegelt werden soll oder nicht, flipped.

Siehe auch paintFlipped().

void QOpenGLPaintDevice::setSize(const QSize &size)

Setzt die Pixelgröße des Malgeräts auf size.

Siehe auch size().

QSize QOpenGLPaintDevice::size() const

Gibt die Pixelgröße des Malgeräts zurück.

Siehe auch setSize().

© 2025 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.