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 |
- Liste de tous les membres, y compris les membres hérités
- QOpenGLPaintDevice fait partie de Rendering in 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 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.