Sur cette page

QOpenGLPaintDevice Class

La classe QOpenGLPaintDevice permet de peindre dans un contexte OpenGL en utilisant QPainter. Plus...

En-tête : #include <QOpenGLPaintDevice>
CMake : find_package(Qt6 REQUIRED COMPONENTS OpenGL)
target_link_libraries(mytarget PRIVATE Qt6::OpenGL)
qmake : QT += opengl
Héritages : QPaintDevice

Fonctions publiques

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

Fonctions publiques réimplémentées

virtual QPaintEngine *paintEngine() const override

Fonctions protégées réimplémentées

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

Description détaillée

Le QOpenGLPaintDevice utilise le contexte QOpenGL actuel pour effectuer le rendu des commandes de dessin QPainter. Le contexte est capturé lors de la construction. Il nécessite le support d'OpenGL (ES) 2.0 ou plus.

Performances

QOpenGLPaintDevice est presque toujours accéléré au niveau matériel et a le potentiel d'être beaucoup plus rapide que la rastérisation logicielle. Cependant, il est plus sensible aux changements d'état, et nécessite donc que les commandes de dessin soient soigneusement ordonnées pour obtenir des performances optimales.

Anti-crénelage et qualité

L'anticrénelage dans le moteur de peinture OpenGL est réalisé à l'aide d'un multi-échantillonnage. La plupart des matériels nécessitent beaucoup plus de mémoire pour effectuer le multi-échantillonnage et la qualité résultante n'est pas à la hauteur de la qualité du moteur de peinture logiciel. La force du moteur de peinture OpenGL réside dans ses performances, et non dans sa qualité de rendu visuel.

Changements d'état

Lorsque l'on peint sur un périphérique QOpenGLPaintDevice en utilisant QPainter, l'état du contexte OpenGL actuel sera modifié par le moteur de peinture pour refléter ses besoins. Les applications ne doivent pas compter sur la réinitialisation de l'état OpenGL à ses conditions d'origine, en particulier le programme de shader actuel, la fenêtre OpenGL, les unités de texture et les modes de dessin.

Mélange de QPainter et d'OpenGL

Lorsque l'on mélange QPainter et OpenGL, il est important de notifier à QPainter que l'état d'OpenGL peut avoir été perturbé afin qu'il puisse restaurer son état interne. Ceci est réalisé en appelant QPainter::beginNativePainting() avant de commencer le rendu OpenGL et en appelant QPainter::endNativePainting() après l'avoir terminé.

Voir aussi l'exemple de fenêtre OpenGL.

Documentation des fonctions membres

QOpenGLPaintDevice::QOpenGLPaintDevice()

Construit un QOpenGLPaintDevice.

Le QOpenGLPaintDevice n'est valable que pour le contexte actuel.

Voir aussi QOpenGLContext::currentContext().

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

Construit un QOpenGLPaintDevice avec l'adresse size.

Le QOpenGLPaintDevice n'est valable que pour le contexte actuel.

Voir aussi QOpenGLContext::currentContext().

QOpenGLPaintDevice::QOpenGLPaintDevice(int width, int height)

Construit un QOpenGLPaintDevice avec les données width et height.

Le QOpenGLPaintDevice n'est valable que pour le contexte actuel.

Voir aussi QOpenGLContext::currentContext().

[virtual noexcept] QOpenGLPaintDevice::~QOpenGLPaintDevice()

Détruit le site QOpenGLPaintDevice.

QOpenGLContext *QOpenGLPaintDevice::context() const

Renvoie le contexte OpenGL associé au périphérique de peinture.

qreal QOpenGLPaintDevice::dotsPerMeterX() const

Renvoie le nombre de pixels par mètre à l'horizontale.

Voir aussi setDotsPerMeterX().

qreal QOpenGLPaintDevice::dotsPerMeterY() const

Renvoie le nombre de pixels par mètre dans le sens vertical.

Voir également setDotsPerMeterY().

[virtual] void QOpenGLPaintDevice::ensureActiveTarget()

Cette méthode virtuelle est fournie en tant que rappel pour permettre de lier à nouveau un objet ou un contexte de tampon d'image cible lorsque différentes instances de QOpenGLPaintDevice émettent des appels de dessin en alternance.

beginNativePainting() déclenche également cette méthode.

L'implémentation par défaut ne fait rien.

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

Réimplémente : QPaintDevice::metric(QPaintDevice::PaintDeviceMetric metric) const.

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

Réimplémente : QPaintDevice::paintEngine() const.

bool QOpenGLPaintDevice::paintFlipped() const

Renvoie true si la peinture est retournée autour de l'axe Y.

Voir aussi setPaintFlipped().

void QOpenGLPaintDevice::setDevicePixelRatio(qreal devicePixelRatio)

Définit le rapport de pixel du périphérique de peinture à devicePixelRatio.

void QOpenGLPaintDevice::setDotsPerMeterX(qreal dpmx)

Définit le nombre de pixels par mètre horizontalement à dpmx.

Voir aussi dotsPerMeterX().

void QOpenGLPaintDevice::setDotsPerMeterY(qreal dpmy)

Définit le nombre de pixels par mètre verticalement à dpmy.

Voir aussi dotsPerMeterY().

void QOpenGLPaintDevice::setPaintFlipped(bool flipped)

Définit si la peinture doit être retournée autour de l'axe Y ou non à flipped.

Voir également paintFlipped().

void QOpenGLPaintDevice::setSize(const QSize &size)

Fixe la taille des pixels du périphérique de peinture à size.

Voir également size().

QSize QOpenGLPaintDevice::size() const

Renvoie la taille en pixels du périphérique de peinture.

Voir également setSize().

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