[RESOLU] GagetOpenGL et position de la souris.
Publié : sam. 26/avr./2025 11:49
Bonjour,
J'utilise l'OpenGLGadget() et avec le code ci-dessous, je souhaite que le sprite matérialisé par un carré jaune suit le déplacement de la souris.
Hors ce n'est pas le cas (Presque pas le cas
)
Les coordonnées de la souris alterne entre la position réel et le point de coordonnée 0,0 correspondant au sommet gauche du gadget OpenGL ce qui a pour résultat un rendu chaotique.
■ Le code.
■ Un extrait du débug
J'utilise l'OpenGLGadget() et avec le code ci-dessous, je souhaite que le sprite matérialisé par un carré jaune suit le déplacement de la souris.
Hors ce n'est pas le cas (Presque pas le cas
Les coordonnées de la souris alterne entre la position réel et le point de coordonnée 0,0 correspondant au sommet gauche du gadget OpenGL ce qui a pour résultat un rendu chaotique.
■ Le code.
Code : Tout sélectionner
EnableExplicit
; Fenetre principale Viewport et couleur arriere plan
Global Window, ww = 800, wh = 600
; Viewport (OpenGLgadget)
Global Viewport, vColor.f = RGB(107, 142, 35)
; Sprite
Global sx, sy, sw = 64, sh = 64, sColor = RGB(255, 215, 0)
;Plan de l'application
Declare Start()
Declare GameRender()
Declare Exit()
Start()
Procedure Start()
Window = OpenWindow(#PB_Any, 0, 0, ww, wh, "Test Opengl", #PB_Window_SystemMenu|#PB_Window_ScreenCentered)
; Fenetre Open GL
Viewport = OpenGLGadget(#PB_Any, 0, 0, ww, wh, #PB_OpenGL_Keyboard)
SetActiveGadget(Viewport)
; Modifier le contexte courant
SetGadgetAttribute(Viewport, #PB_OpenGL_SetContext, #True)
; Couleur d'arrirer plan
glClearColor_(Red(vColor)/255, Green(vColor)/255, Blue(vColor)/255, 1.0)
; Volume de visualisation
glMatrixMode_(#GL_PROJECTION)
glLoadIdentity_();
gluOrtho2D_(0, ww, wh, 0)
;Triggers
BindEvent(#PB_Event_CloseWindow, @Exit())
;Loop
Repeat
GameRender()
Until WindowEvent() = #PB_Event_CloseWindow
EndProcedure
; Rendu de la scene OpenGl
Procedure GameRender()
sx = GetGadgetAttribute(Viewport, #PB_OpenGL_MouseX)
sy = GetGadgetAttribute(Viewport, #PB_OpenGL_MouseY)
Debug "Position x/y " + Str(sx) + "/" + Str(sy)
; ClearScreen
glClear_(#GL_COLOR_BUFFER_BIT | #GL_DEPTH_BUFFER_BIT)
; Affichage d'un carré
glMatrixMode_(#GL_MODELVIEW) ;Initialiser la matrice de transformation courante
glPushMatrix_()
glBegin_(#GL_POLYGON)
glColor3f_(Red(sColor)/255, Green(sColor)/255, Blue(sColor)/255)
glVertex2i_(sx, sy) ;Point haut gauche
glVertex2i_(sx + sw, sy) ;Point haut droit
glVertex2i_(sx + sw, sy + sh) ;Point bas droit
glVertex2i_(sx, sy + sh) ;Point bas gauche
glEnd_() ;Fin du polygone
glPopMatrix_();
; Flip buffer
SetGadgetAttribute(Viewport, #PB_OpenGL_FlipBuffers, #True)
EndProcedure
Procedure Exit()
End
EndProcedure
D'avance merci pour votre aide....
Position x/y 767/56
Position x/y 0/0
Position x/y 767/39
Position x/y 0/0
Position x/y 767/11
Position x/y 0/0
Position x/y 768/3
Position x/y 0/0
...