IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Viadeo Twitter Facebook Share on Google+   
Logo Documentation Qt ·  Page d'accueil  ·  Toutes les classes  ·  Toutes les fonctions  ·  Vues d'ensemble  · 

QGLPixelBuffer

La classe QGLPixelBuffer implémente un pbuffer OpenGL. Plus d'informations...

#include <QGLPixelBuffer>

Voir la position dans l'arbre des classes.

Héritage

Hérite de QPaintDevice.

Cette classe a été introduite dans Qt 4.1.

Description détaillée

La classe QGLPixelBuffer implémente un pbuffer OpenGL.

Le rendu dans un pbuffer est normalement effectué en utilisant l'accélération matérielle. Cela peut être sensiblement plus rapide que de dessiner dans un QPixmap.

Trois approches existent pour utiliser cette classe.

  1. On peut dessiner dans un pbuffer et le convertir en une QImage grâce à la fonction toImage(). Cela est normalement beaucoup plus rapide que d'appeler QGLWidget::renderPixmap().
  2. On peut dessiner dans un pbuffer et copier son contenu dans une texture OpenGL grâce à la fonction updateDynamicTexture(). Cela nous permet de créer des textures dynamiques et fonctionne sur tous les systèmes prenant en charge les pbuffers.
  3. Sur les systèmes qui le prennent en charge, on peut lier le pbuffer à une texture OpenGL. La texture est alors mise à jour automatiquement lorsque le contenu du pbuffer est modifié, ce qui élimine les opérations de copie. Cela n'est pris en charge que sur les systèmes Windows et Mac OS X qui fournissent l'extension render_texture. À noter que sous Windows, un pbuffer utilisant le multisampling ne peut pas être utilisé en conjonction avec l'extension render_texture. Si un pbuffer avec multisampling est demandé sous Windows, l'extension render_texture est désactivée pour ce pbuffer.

Les pbuffers sont fournis par l'extension OpenGL pbuffer ; on appelle la fonction hasOpenGLPbuffer() pour savoir si le système fournit des pbuffers.

Voir aussi les exemples de pbuffers.

Fonctions membres

QGLPixelBuffer::QGLPixelBuffer ( const QSize & size, const QGLFormat & format = QGLFormat::defaultFormat(), QGLWidget * shareWidget = 0 )

Construit un buffer OpenGL de la taille size donnée. Si aucun format n'est spécifié, le format par défaut est utilisé. Si le paramètre shareWidget pointe sur un QGLWidget valide, le pbuffer partagera son contenu avec shareWidget.

Si on souhaite lier ce pbuffer comme texture dynamique, la largeur et hauteur de la taille size doivent être des puissances de deux (par exemple : 512 x 128).

Voir aussi size() et format().

QGLPixelBuffer::QGLPixelBuffer ( int width, int height, const QGLFormat & format = QGLFormat::defaultFormat(), QGLWidget * shareWidget = 0 )

Il s'agit d'une fonction surchargée.

Construit un pbuffer OpenGL de la largeur width et hauteur height. Si aucun format n'est spécifié, le format par défaut est utilisé. Si le paramètre shareWidget pointe sur un QGLWidget valide, le pbuffer partagera son contenu avec shareWidget.

Si on souhaite lier ce pbuffer comme texture dynamique, la largeur et hauteur doivent être des puissances de deux (par exemple : 512 x 128).

Voir aussi size() et format().

QGLPixelBuffer::~QGLPixelBuffer () [virtual]

Détruit le pbuffer et libère les ressources allouées.

GLuint QGLPixelBuffer::bindTexture ( const QImage & image, GLenum target = GL_TEXTURE_2D )

Génère et lie une texture 2D OpenGL au contexte courant en se basant sur image. L'identifiant de la texture générée est renvoyé et peut être utilisé dans les prochains appels à la fonction glBindTexture().

Le paramètre target spécifie la texture cible.

Équivalent à appeler la fonction QGLContext::bindTexture().

Voir aussi deleteTexture().

GLuint QGLPixelBuffer::bindTexture ( const QPixmap & pixmap, GLenum target = GL_TEXTURE_2D )

Il s'agit d'une fonction surchargée.

Génère et lie une texture 2D OpenGL basée sur pixmap.

Équivalent à appeler la fonction QGLContext::bindTexture().

Voir aussi deleteTexture().

GLuint QGLPixelBuffer::bindTexture ( const QString & fileName )

Il s'agit d'une fonction surchargée.

Lit le fichier DirectDrawSurface (DDS) compressé fileName et génère une texture OpenGL 2D à partir de celui-ci.

Équivalent à appeler la fonction QGLContext::bindTexture().

Voir aussi deleteTexture().

bool QGLPixelBuffer::bindToDynamicTexture ( GLuint texture_id )

Lie la texture spécifiée par texture_id à ce pbuffer. Retourne true en cas de réussite ; sinon retourne false.

La texture doit être de la même taille et format que le pbuffer.

Pour délier la texture, appelez la fonction releaseFromDynamicTexture(). Tant que la texture est liée, elle est automatiquement mise à jour lors d'un changement de contenu du pbuffer, éliminant le besoin de faire des opérations de copie supplémentaires.

Exemple :

 QGLPixelBuffer pbuffer(...);
 ...
 pbuffer.makeCurrent();
 GLuint dynamicTexture = pbuffer.generateDynamicTexture();
 pbuffer.bindToDynamicTexture(dynamicTexture);
 ...
 pbuffer.releaseFromDynamicTexture();

Attention : cette fonction utilise l'extension render_texture, qui n'est actuellement pas prise en charge sous X11. Une alternative fonctionnant sur tous les systèmes (y compris X11) est de copier manuellement le contenu du pbuffer dans la texture en utilisant la fonction updateDynamicTexture().

Attention : pour qu'un appel à la fonction bindToDynamicTexture() réussisse sous Mac OS X, le pbuffer nécessite un contexte partagé, c'est-à-dire, le QGLPixelBuffer doit être créé avec un widget de partage.

Voir aussi generateDynamicTexture() et releaseFromDynamicTexture().

void QGLPixelBuffer::deleteTexture ( GLuint texture_id )

Enlève la texture identifiée par texture_id du cache de textures.

Équivalent à appeler la fonction QGLContext::deleteTexture().

bool QGLPixelBuffer::doneCurrent ()

Définit un non-contexte OpenGL comme courant. Retourne true en cas de réussite ; sinon retourne false.

void QGLPixelBuffer::drawTexture ( const QRectF & target, GLuint textureId, GLenum textureTarget = GL_TEXTURE_2D )

Dessine la texture donnée, textureId, dans le rectangle cible donné, target, dans l'espace de coordonnées du modèle OpenGL. Le paramètre textureTarget doit être une cible de texture 2D.

Équivalent à appeler la fonction QGLContext::drawTexture().

Cette fonction a été introduite dans Qt 4.4.

void QGLPixelBuffer::drawTexture ( const QPointF & point, GLuint textureId, GLenum textureTarget = GL_TEXTURE_2D )

Dessine la texture donnée, textureId, à la position point dans l'espace de coordonnées du modèle OpenGL. Le paramètre textureTarget doit être une cible de texture 2D.

Équivalent à appeler la fonction QGLContext::drawTexture().

Cette fonction a été introduite dans Qt 4.4.

QGLFormat QGLPixelBuffer::format () const

Retourne le format du pbuffer. Le format peut être différent de celui demandé.

GLuint QGLPixelBuffer::generateDynamicTexture () const

Génère et lie une texture OpenGL 2D qui a la même taille que le pbuffer, et retourne l'identifiant de la texture. Cette fonction peut être utilisée conjointement avec bindToDynamicTexture() et updateDynamicTexture().

Voir aussi size().

Qt::HANDLE QGLPixelBuffer::handle () const

Retourne le handle natif du pbuffer.

bool QGLPixelBuffer::hasOpenGLPbuffers () [static]

Retourne true si l'extension OpenGL pbuffer est présente sur ce système ; sinon retourne false.

bool QGLPixelBuffer::isValid () const

Retourne true si ce pbuffer est valide ; sinon retourne false.

bool QGLPixelBuffer::makeCurrent ()

Définit ce pbuffer comme contexte de rendu OpenGL courant. Retourne true en cas de réussite ; sinon retourne false.

Voir aussi QGLContext::makeCurrent() et doneCurrent().

int QGLPixelBuffer::metric ( PaintDeviceMetric metric ) const [virtual protected]

Réimplémentation de QPaintDevice::metric().

QPaintEngine * QGLPixelBuffer::paintEngine () const [virtual]

Réimplémentation de QPaintDevice::paintEngine().

void QGLPixelBuffer::releaseFromDynamicTexture ()

Libère le pbuffer de chaque texture qui lui est liée.

Voir aussi bindToDynamicTexture().

QSize QGLPixelBuffer::size () const

Retourne la taille du pbuffer.

QImage QGLPixelBuffer::toImage () const

Retourne le contenu du pbuffer comme QImage.

void QGLPixelBuffer::updateDynamicTexture ( GLuint texture_id ) const

Copie le contenu du pbuffer dans la texture spécifiée par texture_id.

La texture doit être de la même taille et format que le pbuffer.

Exemple :

 QGLPixelBuffer pbuffer(...);
 ...
 pbuffer.makeCurrent();
 GLuint dynamicTexture = pbuffer.generateDynamicTexture();
 ...
 pbuffer.updateDynamicTexture(dynamicTexture);

Une alternative sous les systèmes Windows et Mac OS X qui prennent en charge l'extension render_texture est d'utiliser la fonction bindToDynamicTexture() pour avoir des mises à jour automatiques de la texture.

Voir aussi generateDynamicTexture() et bindToDynamicTexture().

Remerciements

Merci à Alexandre Laurent pour la traduction ainsi qu'à Lo?c Leguay, Jonathan Courtois et Claude Leloup pour leur relecture !

Cette page est une traduction d'une page de la documentation de Qt, écrite par Nokia Corporation and/or its subsidiary(-ies). Les éventuels problèmes résultant d'une mauvaise traduction ne sont pas imputables à Nokia. Qt 4.7
Copyright © 2024 Developpez LLC. Tous droits réservés Developpez LLC. Aucune reproduction, même partielle, ne peut être faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de Developpez LLC. Sinon, vous encourez selon la loi jusqu'à 3 ans de prison et jusqu'à 300 000 E de dommages et intérêts. Cette page est déposée à la SACD.
Vous avez déniché une erreur ? Un bug ? Une redirection cassée ? Ou tout autre problème, quel qu'il soit ? Ou bien vous désirez participer à ce projet de traduction ? N'hésitez pas à nous contacter ou par MP !