glSelectBuffer fonction)

La fonction glSelectBuffer établit une mémoire tampon pour les valeurs du mode de sélection.

Syntaxe

void WINAPI glSelectBuffer(
   GLsizei size,
   GLuint  *buffer
);

Paramètres

size

Taille de la mémoire tampon.

mémoire tampon

Retourne les données de sélection.

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
_valeur non valide du GL _
la taille était négative.
_opération non valide du GL _
La fonction a été appelée alors que le mode de rendu était « GL _ Select ».
_opération non valide du GL _
La fonction a été appelée entre un appel à glBegin et l’appel correspondant à glEnd.

Remarques

La fonction glSelectBuffer a deux paramètres : la mémoire tampon est un pointeur vers un tableau d’entiers non signés et la taille indique la taille du tableau. Le paramètre buffer retourne des valeurs à partir de la pile de noms (consultez glInitNames, glLoadName, glPushName) lorsque le mode de rendu est GL _ Select (voir glRenderMode). La fonction glSelectBuffer doit être émise avant l’activation du mode de sélection, et elle ne doit pas être émise tant que le mode de rendu est GL _ Select.

La sélection est utilisée par un programmeur pour déterminer quelles primitives sont dessinées dans une région d’une fenêtre. La région est définie par les matrices de modelview et de perspective actuelles.

En mode de sélection, aucun fragment de pixel n’est produit à partir de la pixellisation. Au lieu de cela, si une primitive croise le volume de clip défini par l’frustum de visualisation et les plans de découpage définis par l’utilisateur, cette primitive provoque un accès à la sélection. (Avec les polygones, aucun accès n’a lieu si le polygone est éliminé.) Lorsqu’une modification est apportée à la pile de noms, ou lorsque glRenderMode est appelé, un enregistrement d’accès est copié dans buffer si des accès ont eu lieu depuis le dernier événement de ce type (modification de la pile de noms ou appel glRenderMode ). L’enregistrement d’accès se compose du nombre de noms dans la pile de noms au moment de l’événement ; suivi des valeurs de profondeur minimale et maximale de tous les vertex ayant atteint depuis l’événement précédent ; suivi du nom du contenu de la pile, en commençant par le nom inférieur.

Les valeurs de profondeur retournées sont mappées de telle sorte que la plus grande valeur entière non signée correspond à la profondeur de la coordonnée 1,0 et zéro correspond à la profondeur de la coordonnée de la fenêtre 0,0.

Un index interne dans la mémoire tampon est réinitialisé à zéro chaque fois que le mode de sélection est entré. Chaque fois qu’un enregistrement atteint est copié dans la mémoire tampon, l’index est incrémenté pour pointer vers la cellule située juste après la fin du bloc de namesthat, vers la cellule suivante disponible. Si l’enregistrement d’accès est plus grand que le nombre d’emplacements restants dans la mémoire tampon, autant de données que possible est copié, et l’indicateur de dépassement de capacité est défini. Si la pile de noms est vide lorsqu’un enregistrement d’accès est copié, cet enregistrement se compose de zéro suivi des valeurs de profondeur minimale et maximale.

Le mode de sélection est fermé en appelant glRenderMode avec un argument autre que GL _ Select. Chaque fois que glRenderMode est appelé alors que le mode de rendu est GL _ Select, il retourne le nombre d’enregistrements d’accès copiés dans la mémoire tampon, réinitialise l’indicateur de dépassement de capacité et le pointeur de mémoire tampon de sélection, puis initialise la pile de noms pour qu’elle soit vide. Si le bit de dépassement de capacité a été défini lors de l’appel de glRenderMode , un nombre d’enregistrements d’accès négatif est retourné.

Le contenu de buffer n’est pas défini tant que glRenderMode n’est pas appelé avec un argument autre que GL _ Select.

Les / primitives glEnd glBegin et les appels à glRasterPos peuvent entraîner des résultats.

La fonction suivante récupère des informations relatives à glSelectBuffer:

glGet avec argument de la profondeur de la _ pile nom GL _ _

Configuration requise

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

glFeedbackBuffer

glInitNames

glLoadName

glPushName

glRenderMode