OpenGLGadget()
Syntaxe
Resultat = OpenGLGadget(#Gadget, X, Y, Longueur, Hauteur [, Options])Description
Crée une surface d'affichage 3D OpenGL dans la GadgetListe.
Arguments
#Gadget Le numéro d'identification du nouveau gadget.
#PB_Any peut être utilisé pour générer automatiquement ce numéro.X, Y, Largeur, Hauteur La position et les dimensions du nouveau gadget.
La largeur et la hauteur maximale est de 16 000 pixels.Options (optionnel) Peut être une combinaison des constantes suivantes: #PB_OpenGL_Keyboard : permet de recevoir le focus et les évènements du clavier. #PB_OpenGL_NoFlipSynchronization : désactive la synchronisation verticale vsync. #PB_OpenGL_FlipSynchronization : permet la synchronisation verticale vsync (par défaut). #PB_OpenGL_NoDepthBuffer : désactive le tampon de profondeur. #PB_OpenGL_16BitDepthBuffer : crée un tampon de profondeur 16 bits (par défaut). #PB_OpenGL_24BitDepthBuffer : crée un tampon de profondeur 24 bits. #PB_OpenGL_NoStencilBuffer : désactive le stencil buffer (par défaut). #PB_OpenGL_8BitStencilBuffer : crée un stencil buffer 8 bits. #PB_OpenGL_NoAccumulationBuffer : désactive le tampon d'accumulation (par défaut). #PB_OpenGL_32BitAccumulationBuffer: crée un tampon d'accumulation 32 bits. #PB_OpenGL_64BitAccumulationBuffer: crée un tampon d'accumulation 64 bits.L'option #PB_OpenGL_Keyboard est nécessaire pour recevoir des évènements du clavier dans le gadget. Si vous utilisez cette option, vous devriez utiliser les évènements #PB_EventType_Focus et #PB_EventType_LostFocus afin de créer une indication visuelle autour ou sur le gadget quand il reçoit le focus. Ainsi il sera clair pour l'utilisateur que le gadget a bien reçu le focus.
Valeur de retour
Renvoie une valeur non nulle en cas de succès, zéro sinon.
Si #PB_Any a été utilisé pour le paramètre #Gadget, alors la valeur de retour est le numéro d'identification du gadget, généré automatiquement.
Remarques
Ce gadget offre une surface d'affichage qui gère les évènements de la souris et du clavier afin de créer facilement des dessins 3D avec OpenGL. La plupart des commandes OpenGL sont directement disponibles dans PureBasic avec la notation de l'API qui utilise le caractère "soulignement" (la commande se termine par un trait de soulignement, par exemple: 'glBegin_()').
Le gadget créé affiche un fond noir et le contexte courant est réglé sur ce nouveau gadget. Pour modifier le contexte courant, utiliser l'attribut #PB_OpenGL_SetContext. Une fois établi, un cadre peut être affiché à l'aide de l'attribut #PB_OpenGL_FlipBuffers.
Comme le gadget OpenGL est un gadget de rendu en temps réel, il ne stocke pas son rendu dans un tampon séparé, il doit être rendu à nouveau lorsque la fenêtre est redimensionnée, minimisée, maximisée ou si le gadget lui-même est redimensionné ou déplacé .
.: Evènements:
La fonction EventType() indique le type de l'évènement:#PB_EventType_MouseEnter : Le curseur de la souris est entré dans le gadget #PB_EventType_MouseLeave : Le curseur de la souris a quitté le gadget #PB_EventType_MouseMove : Le curseur de la souris a bougé #PB_EventType_MouseWheel : La molette de la souris a été utilisée #PB_EventType_LeftButtonDown : Le bouton gauche de la souris a été pressé #PB_EventType_LeftButtonUp : Le bouton gauche de la souris a été relâché #PB_EventType_LeftClick : Un clic avec le bouton gauche de la souris #PB_EventType_LeftDoubleClick : Un double-clic avec le bouton gauche de la souris #PB_EventType_RightButtonDown : Le bouton droit de la souris a été pressé #PB_EventType_RightButtonUp : Le bouton droit de la souris a été relâché #PB_EventType_RightClick : Un clic avec le bouton droit de la souris #PB_EventType_RightDoubleClick: Un double-clic avec le bouton droit de la souris #PB_EventType_MiddleButtonDown: Le bouton du milieu de la souris a été pressé #PB_EventType_MiddleButtonUp : Le bouton du milieu de la souris a été relâché #PB_EventType_Focus : Le gadget a reçu le focus clavier #PB_EventType_LostFocus : Le gadget a perdu le focus clavier #PB_EventType_KeyDown : Une touche a été pressée #PB_EventType_KeyUp : Une touche a été relâchée #PB_EventType_Input : La saisie de texte a été généréeNotez que les évènements #PB_EventType_KeyDown, #PB_EventType_KeyUp et #PB_EventType_Input ne sont signalés que lorsque le gadget a le focus clavier. Cela signifie que l'option #PB_OpenGL_Keyboard doit être mise lors de la création du gadget pour permettre de recevoir les évènements du clavier. Sous Windows, l'évènement #PB_EventType_MouseWheel n'est également signalé que si le gadget a le focus clavier. Sur les autres systèmes d'exploitation, cet évènement est signalé au gadget sous le curseur, indépendamment de l'état du focus clavier.
.: GetGadgetAttribute()
Les attributs suivants peuvent être utilisés:
#PB_OpenGL_MouseX, #PB_OpenGL_MouseYRenvoie les coordonnées de la souris par rapport à la zone de dessin du gadget. Cela renvoie la position de la souris au moment où l'évènement a été généré, de sorte que le résultat peut différer des coordonnées envoyées par WindowMouseX() et WindowMouseY() qui renvoient l'emplacement actuel de la souris indépendamment des évènements traités. Les coordonnées retournées à l'aide de ces attributs doivent être utilisés pour ce gadget pour s'assurer que les coordonnées de la souris sont en phase avec l'évènement en cours.#PB_OpenGL_ButtonsRenvoie l'état des boutons de la souris.#PB_OpenGL_Modifiers
Le résultat est une combinaison (en utilisant au niveau du bit ou) des valeurs suivantes:#PB_OpenGL_LeftButton : Le bouton gauche est actuellement enfoncé. #PB_OpenGL_RightButton : Le bouton droit est actuellement enfoncé. #PB_OpenGL_MiddleButton: Le bouton du milieu est actuellement enfoncé.Renvoie l'état des modificateurs de clavier pour l'évènement.#PB_OpenGL_WheelDelta
Le résultat est une combinaison (en utilisant au niveau du bit ou) des valeurs suivantes:#PB_OpenGL_Shift : La touche 'majuscule ('shift') est actuellement pressée. #PB_OpenGL_Alt : La touche 'alt' est actuellement pressée. #PB_OpenGL_Control: La touche 'control' est actuellement pressée. #PB_OpenGL_Command: La touche 'command' (ou 'pomme') est actuellement pressée. (OS X seulement)Renvoie le mouvement de la molette de la souris par multiple de 1 ou -1.#PB_OpenGL_Key
Une valeur positive indique que la roue a été déplacée vers le haut (loin de l'utilisateur) et une valeur négative indique que la roue a été déplacée vers le bas (vers l'utilisateur). Cet attribut est égal à zéro si l'évènement en cours n'est pas un évènement #PB_EventType_MouseWheel.Renvoie la touche qui a été enfoncée ou relâchée dans un évènement #PB_EventType_KeyDown ou un évènement #PB_EventType_KeyUp.#PB_OpenGL_Input
La valeur retournée est l'une des valeurs #PB_Shortcut_ ... utilisées par la fonction AddKeyboardShortcut(). Cet attribut renvoie les touches, une à une. Pour la saisie de texte, il est préférable de voir l'évènement #PB_EventType_Input et d'utiliser l'attribut #PB_OpenGL_Input car il permet la saisie de texte même avec des combinaisons de touches (majuscule, accent circonflexe, ...).Renvoie la valeur du caractère généré par l'appui d'une ou de plusieurs touches.#PB_OpenGL_Cursor
Cet attribut n'est possible qu'après un évènement #PB_EventType_Input.
La valeur du caractère retourné peut être convertie en une chaîne de caractère en utilisant la fonction Chr().Renvoie le curseur qui est actuellement utilisé dans le gadget.#PB_OpenGL_CustomCursor
Voir ci-dessous la liste des valeurs possibles.
Si le gadget utilise un handle de curseur personnalisé, le valeur de retour est -1.Renvoie le handle du curseur personnalisé qui a été défini avec SetGadgetAttribute().
Si le gadget utilise un curseur standard, la valeur de retour est 0.
.: SetGadgetAttribute() modifie les attributs suivants:
#PB_OpenGL_SetContextModifie le contexte courant du gadget.#PB_OpenGL_FlipBuffers#True : Utilise le contexte OpenGL du gadget. #False : Retire le contexte courant. Plus de contexte disponible.Renvoie les tampons arrière-plan et avant plan. Tous les dessins sont effectués dans la mémoire tampon d'arrière plan. Pour être visible, les tampons doivent être échangés, de sorte que le tampon d'arrière plan devienne le tampon d'avant plan (celui qui est affiché).#PB_OpenGL_Cursor#True : Echange les tampons #False : Ne pas échanger les tampons (pour l'instant).Change le curseur qui est affiché lorsque la souris passe au dessus du gadget.#PB_OpenGL_CustomCursor
Les valeurs suivantes sont possibles:#PB_Cursor_Default : Par défaut le curseur flèche #PB_Cursor_Cross : Croix #PB_Cursor_IBeam : Point d'insertion "I" #PB_Cursor_Hand : Main #PB_Cursor_Busy : Sablier ou montre #PB_Cursor_Denied : Cercle barré ou grand "X" #PB_Cursor_Arrows : Flèches dans toutes les directions (non disponible sur OS X) #PB_Cursor_LeftRight : Flèches gauche et droite #PB_Cursor_UpDown : Flèches haut et bas #PB_Cursor_LeftUpRightDown: Flèches diagonales (Windows uniquement) #PB_Cursor_LeftDownRightUp: Flèches diagonales (Windows uniquement) #PB_Cursor_Invisible : Curseur invisibleChange le curseur qui est affiché lorsque la souris survole le gadget en un handle de curseur personnalisé créé à l'aide de l'API du système d'exploitation correspondant..: Une 'mini aide' peut être ajoutée à ce gadget à l'aide de GadgetToolTip().
Cet attribut prévoit le type d'entrée suivants:Windows: Un handle HCURSOR
Linux: Un pointeur GtkCursor
OS X: Un pointeur vers une structure de curseur
Exemple
OpenGLGadget.pb
Voir aussi
GetGadgetAttribute(), SetGadgetAttribute(), EventType()
OS Supportés
Tous