fonction glFeedbackBuffer
La fonction glFeedbackBuffer contrôle le mode de commentaires.
Syntaxe
void WINAPI glFeedbackBuffer(
GLsizei size,
GLenum type,
GLfloat *buffer
);
Paramètres
-
size
-
Nombre maximal de valeurs pouvant être écrites dans la mémoire tampon.
-
type
-
Constante symbolique qui décrit les informations qui seront retournées pour chaque sommet. Les constantes symboliques suivantes sont acceptées : GL_2D, GL_3D, GL_3D_COLOR, GL_3D_COLOR_TEXTURE et GL_4D_COLOR_TEXTURE.
-
Tampon
-
Retourne les données de commentaires.
Valeur renvoyée
Cette fonction ne retourne pas de valeur.
Codes d’erreur
Les codes d’erreur suivants peuvent être récupérés par la fonction glGetError .
Name | Signification |
---|---|
|
type n’était pas une valeur acceptée. |
|
la taille était négative. |
|
glFeedbackBuffer a été appelé alors que le mode de rendu était GL_FEEDBACK, ou glRenderMode a été appelé avec l’argument GL_FEEDBACK avant que glFeedbackBuffer n’ait été appelé au moins une fois. |
|
La fonction a été appelée entre un appel à glBegin et l’appel à glEnd correspondant. |
Notes
La fonction glFeedbackBuffer contrôle les commentaires. Les commentaires, comme la sélection, sont un mode OpenGL. Le mode est sélectionné en appelant glRenderMode avec GL_FEEDBACK. Quand OpenGL est en mode de commentaires, aucun pixel n’est produit par la rastérisation. Au lieu de cela, les informations sur les primitives qui auraient été rastérisées sont transmises à l’application à l’aide d’OpenGL.
La fonction glFeedbackBuffer a trois arguments :
- buffer est un pointeur vers un tableau de valeurs à virgule flottante dans laquelle les informations de commentaires sont placées.
- size indique la taille du tableau.
- type est une constante symbolique décrivant les informations qui sont alimentées pour chaque vertex.
Vous devez émettre glFeedbackBuffer avant d’activer le mode de commentaires (en appelant glRenderMode avec l’argument GL_FEEDBACK). La définition de GL_FEEDBACK sans établir la mémoire tampon de commentaires ou l’appel de glFeedbackBuffer alors qu’OpenGL est en mode de commentaires est une erreur.
Sortez OpenGL du mode de commentaires en appelant glRenderMode avec une valeur de paramètre autre que GL_FEEDBACK. Lorsque vous effectuez cette opération alors qu’OpenGL est en mode de commentaires, glRenderMode retourne le nombre d’entrées placées dans le tableau de commentaires. La valeur retournée ne dépasse jamais la taille. Si les données de commentaires nécessitaient plus d’espace que ce qui était disponible dans la mémoire tampon, glRenderMode retourne une valeur négative.
En mode feedback, chaque primitive qui serait rastérisée génère un bloc de valeurs qui est copié dans le tableau de commentaires. Si cela entraîne le dépassement du nombre d’entrées, glFeedbackBuffer écrit partiellement le bloc afin de remplir le tableau (s’il reste de la place) et définit un indicateur de dépassement de capacité. Chaque bloc commence par un code indiquant le type primitif, suivi des valeurs qui décrivent les sommets de la primitive et les données associées. La fonction glFeedbackBuffer écrit également des entrées pour les bitmaps et les rectangles de pixels. La rétroaction se produit après l’élimination des polygones et l’interprétation glPolygonMode des polygones, de sorte que les polygones qui sont abattus ne sont pas retournés dans la mémoire tampon de commentaires. Cela peut également se produire après que les polygones avec plus de trois arêtes sont divisés en triangles, si l’implémentation OpenGL affiche les polygones en effectuant cette décomposition.
Vous pouvez insérer un marqueur dans la mémoire tampon de commentaires avec glPassThrough.
Voici la grammaire des blocs de valeurs écrits dans la mémoire tampon de commentaires. Chaque primitive est indiquée avec une valeur d’identification unique suivie d’un certain nombre de sommets. Les entrées de polygone incluent une valeur entière indiquant le nombre de sommets qui suivent. Un vertex est alimenté en tant que nombre de valeurs à virgule flottante, déterminées par type. Les couleurs sont alimentées en quatre valeurs en mode RVBA et une valeur en mode d’index de couleur.
feedbackList FeedbackItem < feedbackList | feedbackItem
feedbackItem < point | lineSegment | polygon | bitmap | pixelRectangle | passThru
point < GL_POINT_TOKEN sommet
lineSegment < GL_LINE_TOKEN vertex vertex | sommet GL_LINE_RESET_TOKEN vertex
polygone < GL_POLYGON_TOKEN n polySpec
polySpec polySpec < vertex | vertex vertex
bitmap < GL_BITMAP_TOKEN vertex
pixelRectangle < GL_DRAW_PIXEL_TOKEN vertex | sommet GL_COPY_PIXEL_TOKEN
valeur de GL_PASS_THROUGH_TOKEN passThru <
vertex < 2d | 3d | 3dColor | 3dColorTexture | 4dColorTexture
Valeur 2d <
Valeur de valeur 3d <
3dColor < valeur valeur couleur
3dColorTexture < valeur valeur valeur couleur tex
4dColorTexture < valeur valeur valeur valeur couleur tex
color < rgba | index
valeur rgba < valeur valeur valeur
valeur d’index <
valeur valeur tex < valeur
Le paramètre value est un nombre à virgule flottante, et n est un entier à virgule flottante qui donne le nombre de sommets dans le polygone. Voici des constantes symboliques à virgule flottante : GL_POINT_TOKEN, GL_LINE_TOKEN, GL_LINE_RESET_TOKEN, GL_POLYGON_TOKEN, GL_BITMAP_TOKEN, GL_DRAW_PIXEL_TOKEN, GL_COPY_PIXEL_TOKEN et GL_PASS_THROUGH_TOKEN. GL_LINE_RESET_TOKEN est retourné chaque fois que le modèle d’info-bulle de ligne est réinitialisé. Les données retournées sous forme de vertex dépendent du type de commentaires.
Le tableau suivant indique la correspondance entre le type et le nombre de valeurs par sommet ; k est 1 en mode d’index de couleur et 4 en mode RVBA.
Type | Coordinates | Color | Texture | Nombre total de valeurs |
---|---|---|---|---|
GL_2D | x, y | 2 | ||
GL_3D | x, y, z | 3 | ||
GL_3D_COLOR | x, y, z | k | 3 + k | |
GL_3D_COLOR_TEXTURE | x, y, z, | k | 4 | 7 + k |
GL_4D_COLOR_TEXTURE | x, y, z, w | k | 4 | 8 + k |
Les coordonnées de vertex de commentaires se trouvent dans les coordonnées de fenêtre, à l’exception de w, qui se trouve dans les coordonnées d’élément. Les couleurs des commentaires sont éclairées si l’éclairage est activé. Les coordonnées de texture de commentaires sont générées si la génération de coordonnées de texture est activée. Ils sont toujours transformés par la matrice de texture.
La fonction glFeedbackBuffer , lorsqu’elle est utilisée dans une liste d’affichage, n’est pas compilée dans la liste d’affichage, mais est exécutée immédiatement.
La fonction suivante récupère les informations relatives à glFeedbackBuffer :
glGet avec argument GL_RENDER_MODE
Spécifications
Condition requise | Valeur |
---|---|
Client minimal pris en charge |
Windows 2000 Professionnel [applications de bureau uniquement] |
Serveur minimal pris en charge |
Windows 2000 Server [applications de bureau uniquement] |
En-tête |
|
Bibliothèque |
|
DLL |
|