Sur cette page

QOpenGLPaintDevice Class

La classe `QOpenGLPaintDevice` permet d'effectuer des opérations de dessin dans un contexte OpenGL à l'aide de ` QPainter`. En savoir plus...

En-tête : #include <QOpenGLPaintDevice>
CMake : find_package(Qt6 REQUIRED COMPONENTS OpenGL)
target_link_libraries(mytarget PRIVATE Qt6::OpenGL)
qmake : QT += opengl
Hérite de : 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

QOpenGLPaintDevice(const QOpenGLPaintDevice &)
QOpenGLPaintDevice &operator=(const QOpenGLPaintDevice &)

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

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

Description détaillée

La classe QOpenGLPaintDevice utilise le contexte QOpenGL actuel pour exécuter les commandes de dessin d'QPainter. Le contexte est capturé lors de la construction. Elle nécessite la prise en charge d'OpenGL (ES) 2.0 ou supérieur.

Performances

La classe QOpenGLPaintDevice bénéficie presque toujours d’une accélération matérielle et peut s’avérer nettement plus rapide que la rastérisation logicielle. Elle est toutefois plus sensible aux changements d’état et nécessite donc que les commandes de dessin soient soigneusement ordonnées pour atteindre des performances optimales.

Anticrénelage et qualité

L’anticrénelage dans le moteur de peinture OpenGL est réalisé à l’aide du multisampling. La plupart des matériels nécessitent beaucoup plus de mémoire pour effectuer le multisampling et la qualité obtenue n’est pas à la hauteur de celle du moteur de peinture logiciel. La force du moteur de peinture OpenGL réside dans ses performances, et non dans la qualité de son rendu visuel.

Changements d’état

Lors d’un dessin sur un QOpenGLPaintDevice à l’aide de ` QPainter`, l’état du contexte OpenGL actuel sera modifié par le moteur de dessin afin de répondre à ses besoins. Les applications ne doivent pas compter sur le rétablissement de l’état d’origine d’OpenGL, en particulier en ce qui concerne le programme de shader actuel, la fenêtre d’affichage OpenGL, les unités de texture et les modes de dessin.

Combinaison de QPainter et d’OpenGL

Lorsqu’on combine l’ QPainter et OpenGL, il est important d’indiquer à QPainter que l’état OpenGL a pu être altéré afin qu’il puisse restaurer son état interne. Pour ce faire, il faut appeler QPainter::beginNativePainting() avant de lancer le rendu OpenGL et QPainter::endNativePainting() une fois celui-ci terminé.

Considérations de sécurité

Avertissement : tout contenu rendu via QOpenGLPaintDevice est supposé être fiable. La géométrie vectorielle, les images et autres données de dessin sont traitées, éventuellement modifiées, puis transmises à l'implémentation OpenGL sous-jacente. Il est conseillé aux développeurs d'applications d'examiner attentivement les implications potentielles avant de rendre (transmettre) du contenu fourni par l'utilisateur.

Voir également l’exemple de fenêtre OpenGL.

Documentation des fonctions membres

QOpenGLPaintDevice::QOpenGLPaintDevice()

Crée un objet `QOpenGLPaintDevice`.

L'objet QOpenGLPaintDevice n'est valable que pour le contexte actuel.

Voir également QOpenGLContext::currentContext().

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

Crée un objet `QOpenGLPaintDevice` avec l'size` spécifié.

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

Voir aussi QOpenGLContext::currentContext().

QOpenGLPaintDevice::QOpenGLPaintDevice(int width, int height)

Crée un objet `QOpenGLPaintDevice` avec les paramètres ` width ` et ` height` fournis.

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

Voir également QOpenGLContext::currentContext().

[protected delete] QOpenGLPaintDevice::QOpenGLPaintDevice(const QOpenGLPaintDevice &)

Copie et construit une instance de ` QOpenGLPaintDevice`. Cette fonction est supprimée.

[virtual noexcept] QOpenGLPaintDevice::~QOpenGLPaintDevice()

Supprime l'QOpenGLPaintDevice.

QOpenGLContext *QOpenGLPaintDevice::context() const

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

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 à la verticale.

Voir aussi setDotsPerMeterY().

[virtual] void QOpenGLPaintDevice::ensureActiveTarget()

Cette méthode virtuelle est fournie sous forme de rappel afin de permettre la réaffectation d’un objet tampon d’image cible ou d’un contexte lorsque différentes instances de ` QOpenGLPaintDevice ` émettent des appels de dessin en alternance.

beginNativePainting() déclenchera é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 l'image est inversée autour de l'axe Y.

Voir aussi setPaintFlipped().

void QOpenGLPaintDevice::setDevicePixelRatio(qreal devicePixelRatio)

Définit le rapport de pixels de l'appareil pour le périphérique de dessin sur devicePixelRatio.

void QOpenGLPaintDevice::setDotsPerMeterX(qreal dpmx)

Définit le nombre de pixels par mètre à l'horizontale sur dpmx.

Voir aussi dotsPerMeterX().

void QOpenGLPaintDevice::setDotsPerMeterY(qreal dpmy)

Définit le nombre de pixels par mètre à la verticale sur dpmy.

Voir également dotsPerMeterY().

void QOpenGLPaintDevice::setPaintFlipped(bool flipped)

Détermine si le dessin doit être inversé autour de l'axe Y ou non : flipped.

Voir également paintFlipped().

void QOpenGLPaintDevice::setSize(const QSize &size)

Définit la taille en pixels du périphérique de dessin sur size.

Voir aussi size().

QSize QOpenGLPaintDevice::size() const

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

Voir aussi setSize().

[protected delete] QOpenGLPaintDevice &QOpenGLPaintDevice::operator=(const QOpenGLPaintDevice &)

Copie et attribue l'other e à cette instance d'QOpenGLPaintDevice. Cette fonction est supprimée.

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