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  · 

QGLBuffer

La classe QGLBuffer fournit des fonctions pour créer et gérer les objets buffers OpenGL. Plus d'informations...

#include <QGLBuffer>

Voir la position dans l'arbre des classes.

Cette classe a été introduite dans Qt 4.7.

Description détaillée

La classe QGLBuffer fournit des fonctions pour créer et gérer les objets buffers OpenGL.

Les objets buffers sont créés dans le serveur OpenGL ce qui permet à l'application cliente d'éviter d'envoyer les vertex, index, données de texture, etc., à chaque fois qu'elles sont nécessaires.

Les objets QGLBuffer peuvent être copiés comme référence pour l'objet buffer OpenGL sous-jacent :

 QGLBuffer buffer1(QGLBuffer::IndexBuffer);
 buffer1.create();
 
 QGLBuffer buffer2 = buffer1;

QGLBuffer effectue une copie superficielle lorsque les objets sont copiés de cette manière, mais n'implémente pas les sémantiques de la copie sur écriture (COW). L'objet original sera affecté à chaque fois que la copie est modifiée.

Type

enum QGLBuffer::Access

Cette enum définit le mode d'accès pour QGLBuffer::map().

Constante Valeur Description
QGLBuffer::ReadOnly 0x88B8 Le buffer va être accédé seulement en lecture.
QGLBuffer::WriteOnly 0x88B9 Le buffer va être accédé seulement en écriture.
QGLBuffer::ReadWrite 0x88BA Le buffer va être accédé en lecture et écriture.

enum QGLBuffer::Type

Cette enum définit le type d'objet buffer OpenGL à créer avec QGLBuffer.

Constante Valeur Description
QGLBuffer::VertexBuffer 0x8892 Objet buffer de vertex à utiliser lors d'envoi de tableaux de vertex.
QGLBuffer::IndexBuffer 0x8893 Objet buffer d'index à utiliser avec glDrawElements().
QGLBuffer::PixelPackBuffer 0x88EB Objet buffer de paquetage de pixels pour la lecture de pixels à partir du serveur OpenGL (par exemple, avec glReadPixels()). Non pris en charge sous OpenGL/ES.
QGLBuffer::PixelUnpackBuffer 0x88EC Object buffer de dépaquetage de pixels pour l'écriture de pixels vers le serveur OpenGL (par exemple, avec glTexImage2D()). Non pris en charge sous OpenGL/ES.

enum QGLBuffer::UsagePattern

Cette enum définit le schéma d'utilisation de l'objet QGLBuffer.

Constante Valeur Description
QGLBuffer::StreamDraw 0x88E0 Les données vont être définies une fois et utilisées peu de fois pour des opérations de dessin. Sous OpenGL/ES 1.1 c'est identique à StaticDraw.
QGLBuffer::StreamRead 0x88E1 Les données vont être définies une fois et utilisées peu de fois pour lire des données à partir du serveur OpenGL. Non pris en charge sous OpenGL/ES.
QGLBuffer::StreamCopy 0x88E2 Les données vont être définies une fois et utilisées peu de fois pour lire des données à partir du serveur OpenGL et qui seront utilisées dans de futures opérations de dessin. Non pris en charge sous OpenGL/ES.
QGLBuffer::StaticDraw 0x88E4 Les données vont être définies une fois et utilisées de nombreuses fois pour des opérations de dessin.
QGLBuffer::StaticRead 0x88E5 Les données vont être définies une fois et utilisées de nombreuses fois pour lire des données à partir du serveur OpenGL. Non pris en charge sous OpenGL/ES.
QGLBuffer::StaticCopy 0x88E6 Les données vont être définies une fois et utilisées de nombreuse fois pour lire des données à partir du serveur OpenGL qui seront utilisées dans de futures opérations de dessin. Non pris en charge sous OpenGL/ES.
QGLBuffer::DynamicDraw 0x88E8 Les données vont continuellement être modifiées et utilisées de nombreuses fois pour des opérations de dessin.
QGLBuffer::DynamicRead 0x88E9 Les données vont continuellement être modifiées et utilisées de nombreuses fois pour lire des données à partir du serveur OpenGL. Non pris en charge sous OpenGL/ES.
QGLBuffer::DynamicCopy 0x88EA Les données vont continuellement être modifiées et utilisées de nombreuses fois pour lire des données à partir du serveur OpenGL qui seront utilisées dans de futures opérations de dessin. Non pris en charge sous OpenGL/ES.

Fonctions membres

QGLBuffer::QGLBuffer ()

Construit un nouvel objet buffer de type QGLBuffer::VertexBuffer.

Note : le constructeur crée juste l'instance du QGLBuffer. L'objet buffer du serveur OpenGL n'est pas créé avant que create() ne soit appelé.

Voir aussi create().

QGLBuffer::QGLBuffer ( QGLBuffer::Type type )

Construit un nouvel objet buffer du type.

Note : le constructeur crée juste l'instance du QGLBuffer. L'objet buffer du serveur OpenGL n'est pas créé avant que create() ne soit appelé.

Voir aussi create().

QGLBuffer::QGLBuffer ( const QGLBuffer & other )

Construit une copie superficielle de other.

Note : QGLBuffer n'implémente pas les sémantiques copie sur écriture (COW), donc other va être affecté à chaque fois que la copie est modifiée.

QGLBuffer::~QGLBuffer ()

Détruit l'objet buffer, incluant l'espace de stockage utilisé par le serveur OpenGL.

void QGLBuffer::allocate ( const void * data, int count )

Alloue le nombre count d'octets pour le buffer, initialisé avec le contenu de data. L'ancien contenu sera supprimé.

On suppose que create() a été appelé sur ce buffer et qu'il a été lié au contexte courant.

Voir aussi create(), read() et write().

void QGLBuffer::allocate ( int count )

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

Alloue, le nombre count d'octets pour le buffer. L'ancien contenu sera supprimé.

On suppose que create() a été appelé sur ce buffer et qu'il a été lié au contexte courant.

Voir aussi create() et write().

bool QGLBuffer::bind ()

Lie le buffer associé à cet objet au contexte OpenGL courant. Retourne false si la liaison n'a pas été possible, souvent à cause d'un type() non pris en charge par cette implémentation d'OpenGL.

Le buffer doit être lié avec le même QGLContext courant lors de l'appel à create() ou d'un autre QGLContext qui partage les ressources avec celui-ci. Sinon, false va être retourné.

Voir aussi release() et create().

GLuint QGLBuffer::bufferId () const

Retourne l'identifiant OpenGL associé à ce buffer ; zéro si le buffer n'a pas été créé.

Voir aussi isCreated().

bool QGLBuffer::create ()

Crée un objet buffer dans le serveur OpenGL. Retourne true si l'objet a été créé ; sinon false.

Cette fonction doit être appelée avec le QGLContext courant. Le buffer va être lié au contexte et ne pourra être utilisé qu'avec ce contexte (ou un autre contexte avec lequel il partage ses ressources).

Cette fonction va retourner false si l'implémentation d'OpenGL ne prend pas en charge les buffers ou s'il n'y a pas de QGLContext courant.

Voir aussi isCreated(), allocate(), write() et destroy().

void QGLBuffer::destroy ()

Détruit cet objet buffer, incluant l'espace de stockage utilisé par le serveur OpenGL. Toutes les références à ce buffer deviendront invalides.

bool QGLBuffer::isCreated () const

Retourne true si ce buffer a été créé ; sinon false.

Voir aussi create() et destroy().

void * QGLBuffer::map ( QGLBuffer::Access access )

Accède au contenu de ce buffer dans la mémoire de l'application et retourne un pointeur dessus. Retourne NULL si l'accès n'est pas possible. Le paramètre access indique le type d'accès à effectuer.

On suppose que create() a été appelé pour ce buffer et qu'il a été lié au contexte courant.

Cette fonction n'est prise en charge sous OpenGL/ES que si l'extension GL_OES_mapbuffer est présente.

Voir aussi unmap(), create() et bind().

bool QGLBuffer::read ( int offset, void * data, int count )

Lit le nombre count d'octets de ce buffer en partant du décalage offset dans data. Retourne true lors d'une réussite ; false si la lecture à partir du buffer n'est pas prise en charge. La lecture d'un buffer n'est pas prise en charge sous OpenGL/ES.

On suppose que ce buffer a été lié au contexte courant.

Voir aussi write() et bind().

void QGLBuffer::release ()

Libère le buffer associé à cet objet du contexte OpenGL courant.

Cette fonction doit être appelée avec le même QGLContext courant que lors de l'appel bind() pour ce buffer.

Voir aussi bind().

void QGLBuffer::release ( QGLBuffer::Type type ) [static]

Libère le buffer associé avec type dans le QGLContext courant.

Cette fonction est un appel direct à glBindBuffer(type, 0) afin d'être utilisée lorsque l'appelant ne connaît pas quel QGLBuffer a été lié au contexte et qu'il veut être sûr qu'il est libéré.

 QGLBuffer::release(QGLBuffer::VertexBuffer);

void QGLBuffer::setUsagePattern ( QGLBuffer::UsagePattern value )

Définit l'utilisation de cet objet buffer à la valeur value. Cette fonction doit être appelée avec allocate() ou write().

Voir aussi usagePattern(), allocate() et write().

int QGLBuffer::size () const

Retourne la taille des données de ce buffer, pour les opérations de lecture. Retourne -1, si la récupération de la taille du buffer n'est pas supportée ou si le buffer n'a pas été créé.

Il est supposé que ce buffer a été lié avec le contexte courant.

Voir aussi isCreated() et bind().

QGLBuffer::Type QGLBuffer::type () const

Retourne le type de buffer représenté par cet objet.

bool QGLBuffer::unmap ()

Enlève l'accès au buffer après un appel à map(). Retourne true si cela réussit ; sinon false.

On suppose que ce buffer a été lié au contexte courant et qu'il a été précédemment accédé avec map().

Cette fonction n'est prise en charge sous OpenGL/ES que si l'extension GL_OES_mapbuffer est présente.

Voir aussi map().

QGLBuffer::UsagePattern QGLBuffer::usagePattern () const

Retourne le schéma d'utilisation de cet objet buffer. La valeur par défaut est StaticDraw.

Voir aussi setUsagePattern().

void QGLBuffer::write ( int offset, const void * data, int count )

Remplace le nombre count d'octets de ce buffer, partant du décalage offset avec le contenu de data. Les autres octets du buffer vont être laissés tels quels.

On suppose que create() a été appelé pour ce buffer et qu'il a été lié au contexte courant.

Voir aussi create(), read() et allocate().

QGLBuffer & QGLBuffer::operator= ( const QGLBuffer & other )

Assigne une copie superficielle de other à cet objet.

Note : QGLBuffer n'implémente pas les sémantiques copie sur écriture (COW), donc other va être affecté à chaque fois que la copie est modifiée.

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 !