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ée   
Notez 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_MouseY
Renvoie 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_Buttons
Renvoie l'état des boutons de la souris.
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é.
#PB_OpenGL_Modifiers
Renvoie l'état des modificateurs de clavier pour l'évènement.
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)
#PB_OpenGL_WheelDelta
Renvoie le mouvement de la molette de la souris par multiple de 1 ou -1.
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.
#PB_OpenGL_Key
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.
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, ...).
#PB_OpenGL_Input
Renvoie la valeur du caractère généré par l'appui d'une ou de plusieurs touches.
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().
#PB_OpenGL_Cursor
Renvoie le curseur qui est actuellement utilisé dans le gadget.
Voir ci-dessous la liste des valeurs possibles.
Si le gadget utilise un handle de curseur personnalisé, le valeur de retour est -1.
#PB_OpenGL_CustomCursor
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_SetContext
Modifie le contexte courant du gadget.
  #True  : Utilise le contexte OpenGL du gadget.
  #False : Retire le contexte courant. Plus de contexte disponible.
#PB_OpenGL_FlipBuffers
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é).
  #True  : Echange les tampons
  #False : Ne pas échanger les tampons (pour l'instant).
#PB_OpenGL_Cursor
Change le curseur qui est affiché lorsque la souris passe au dessus du gadget.
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 invisible
#PB_OpenGL_CustomCursor
Change 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.
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
.: Une 'mini aide' peut être ajoutée à ce gadget à l'aide de GadgetToolTip().

Exemple

OpenGLGadget.pb

Voir aussi

GetGadgetAttribute(), SetGadgetAttribute(), EventType()

OS Supportés

Tous

<- MDIGadget() - Gadget Index - OpenGadgetList() ->