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