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 |
- Liste de tous les membres, y compris les membres hérités
- QOpenGLPaintDevice fait partie du module « Rendu 3D ».
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.