[PB 5.30 B1] OpenGLGadget()

Vous débutez et vous avez besoin d'aide ? N'hésitez pas à poser vos questions
Avatar de l’utilisateur
falsam
Messages : 7324
Inscription : dim. 22/août/2010 15:24
Localisation : IDF (Yvelines)
Contact :

[PB 5.30 B1] OpenGLGadget()

Message par falsam »

Sur une fenêtre, je place deux OpenGLGadget.
Pour chacun de ces gadgets je crée un simple carré de couleurs jaune.
La création de ce carré se trouve dans la procédure DrawCube()
Quand je redimensionne la fenetre, l'OpenGLGadget de droite est lui aussi redimensionné.

Je ne comprenais pas pourquoi il se redimensionnait après la fin du redimensionnement de la fenetre et je pensais à un bug. En fait non, et j'ai donné une explication sur ce lien http://www.purebasic.fr/french/viewtopi ... =4&t=14512

Reste un souci que je ne comprend pas : Pourquoi je suis obligé de créer les deux OpenGLGadget() avant de commencer à dessiner ?

■ Code

Code : Tout sélectionner

;Dessine un carré jaune
Procedure Drawsquare(Gadget)
  SetGadgetAttribute(Gadget, #PB_OpenGL_SetContext, #True)
  
  glColor3f_(1.0,1.0,0.0)
  
  glBegin_(#GL_POLYGON)
    glVertex2f_(-0.5,-0.5)
    glVertex2f_(-0.5,0.5)
    glVertex2f_(0.5,0.5)
    glVertex2f_(0.5,-0.5)
  glEnd_()
  
  glFlush_() ;s'assure que toutes les commandes OpenGL ont été exécutées
  
  SetGadgetAttribute(Gadget, #PB_OpenGL_FlipBuffers, #True)
EndProcedure

;Redimentionne les contextes OpenGlGadget(à
Procedure Redraw()
  ResizeGadget(1, #PB_Ignore, #PB_Ignore, WindowWidth(0) - 230, WindowHeight(0)-20)
  DrawSquare(0)
  Drawsquare(1)
EndProcedure

OpenWindow(0, 0, 0, 500, 320, "OpenGL Gadget exemple", #PB_Window_SystemMenu|#PB_Window_SizeGadget|#PB_Window_ScreenCentered)
BindEvent(#PB_Event_SizeWindow, @Redraw())

OpenGLGadget(0, 10, 10, 200, 200)
OpenGLGadget(1, 220, 10, 270, 300)

DrawSquare(0)
DrawSquare(1)

Repeat
  Event = WaitWindowEvent()
  
  Select Event
  EndSelect  
  
Until Event = #PB_Event_CloseWindow
Si je place DrawSquare(0) juste après OpenGLGadget(0, 10, 10, 200, 200) je n'ai pas de dessin sur le gadget de gauche.

Il est inutile de modifier les paramètres de compilation :)
Configuration : Windows 11 Famille 64-bit - PB 6.20 x64 - AMD Ryzen 7 - 16 GO RAM
Vidéo NVIDIA GeForce GTX 1650 Ti - Résolution 1920x1080 - Mise à l'échelle 125%