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
GL_INVALID_ENUM
type n’était pas une valeur acceptée.
GL_INVALID_ENUM
la taille était négative.
GL_INVALID_OPERATION
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.
GL_INVALID_OPERATION
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
Gl.h
Bibliothèque
Opengl32.lib
DLL
Opengl32.dll

Voir aussi

glBegin

glEnd

glGet

glLineStipple

glPassThrough

glPolygonMode

glRenderMode

glSelectBuffer