QGLPixelBufferLa classe QGLPixelBuffer implémente un pbuffer OpenGL. Plus d'informations... #include <QGLPixelBuffer> Voir la position dans l'arbre des classes. HéritageHérite de QPaintDevice. Cette classe a été introduite dans Qt 4.1. Description détailléeLa 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.
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 membresQGLPixelBuffer::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 () constRetourne le format du pbuffer. Le format peut être différent de celui demandé. GLuint QGLPixelBuffer::generateDynamicTexture () constGé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 () constRetourne 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 () constRetourne 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 () constRetourne la taille du pbuffer. QImage QGLPixelBuffer::toImage () constRetourne le contenu du pbuffer comme QImage. void QGLPixelBuffer::updateDynamicTexture ( GLuint texture_id ) constCopie 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(). RemerciementsMerci à 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 ! |