[RESOLVED]2D ExamineMouse() SACCADE

Vous débutez et vous avez besoin d'aide ? N'hésitez pas à poser vos questions
Avatar de l’utilisateur
Atlante
Messages : 337
Inscription : mer. 29/juin/2011 18:35
Localisation : Paris

[RESOLVED]2D ExamineMouse() SACCADE

Message par Atlante »

Hello,

Suis je le seul à avoir des ralentissements avec cette fonction ?
Je m'explique : quand je bouge la souris doucement pas de problème, mais lorsque je la bouge normalement ça saccade surtout en diagonale.

Même sur le mouse exemple de Pure basic :

Code : Tout sélectionner

; ------------------------------------------------------------
;
;   PureBasic - Mouse example file
;
;    (c) 2001 - Fantaisie Software
;
; ------------------------------------------------------------
;

If InitMouse() = 0 Or InitSprite() = 0 Or InitKeyboard() = 0
  MessageRequester("Error", "Can't open DirectX 7", 0)
  End
EndIf

;
;-------- MessageReq and OpenScreen --------
;

MessageRequester("Information", "This will test the fast mouse access..."+Chr(10)+"Press any mouse button to quit!", 0)

If OpenScreen(800, 600, 16, "Mouse") = 0
  MessageRequester("Error", "Impossible to open a 800*600 16 bit screen",0)
  End
EndIf

;
;-------- Init and Load Stuff --------
;

x = 100
y = 100

LoadSprite(0, "Data/PureBasic.bmp", 0)   ; Load nice small Logo

;
;-------- MainLoop --------
;

Repeat
  FlipBuffers()                        ; Flip for DoubleBuffering
  ClearScreen(RGB(0,0,0))                   ; CleanScreen, black

  ExamineKeyboard()
  ExamineMouse()                      
          
  x = MouseX()                         ; Returns actual x pos of our mouse
  y = MouseY()                         ; Returns actual y pos of our mouse
  
  x+MouseWheel()*10
  
  If MouseButton(#PB_MouseButton_Middle)
    MouseLocate(400, 300)
  EndIf

  DisplaySprite(0, x-SpriteWidth(0)/2, y-SpriteHeight(0)/2)

Until MouseButton(#PB_MouseButton_Left) Or MouseButton(#PB_MouseButton_Right)

End    
Modérateur
Config : Intel I5 4670K, Nvidia Geforce GTX 1060, 16go RAM, SSD 256go, DD 2000go
Avatar de l’utilisateur
Atlante
Messages : 337
Inscription : mer. 29/juin/2011 18:35
Localisation : Paris

Re: 2D ExamineMouse() SACCADE

Message par Atlante »

Bon j'ai trouvé la réponse sur le forum Anglais :
http://www.purebasic.fr/english/viewtop ... e&start=15

Code : Tout sélectionner

InitSprite()
InitMouse()

OpenWindow(0, 0, 0, 640, 480, "Crap Mouse Movement", #PB_Window_MinimizeGadget | #PB_Window_ScreenCentered | #PB_Window_BorderLess)
OpenWindowedScreen(WindowID(0), 0, 0, 640, 480, 0, 0, 0, #PB_Screen_SmartSynchronization)

CreateSprite(0, 32, 32)
StartDrawing(SpriteOutput(0))
Box(0, 0, 32, 32, #Blue)
StopDrawing()

Global mousex.i,mousey.i,screenactive.i

Procedure mousethread(flag.i)
   Static quit.i
   If flag
      Repeat
         If ExamineMouse()
            mousex=MouseX()
            mousey=MouseY()
         EndIf
         Delay(1)
      Until quit
      quit=#False
   Else
      If Not flag
         quit=#True
         While quit
            Delay(1)
         Wend
      EndIf
   EndIf
EndProcedure

Define testscreenactive.i=#True
CreateThread(@mousethread(),#True)
Repeat
   Repeat
      Event = WindowEvent()
      Select Event
         Case #PB_Event_CloseWindow
            Quit = 1
      EndSelect
   Until Event = 0
   
   ClearScreen(#Black)
   DisplaySprite(0, mousex, mousey)

   FlipBuffers()
   testscreenactive=IsScreenActive()
   If testscreenactive<>screenactive
      screenactive=testscreenactive
      If screenactive=1
         ReleaseMouse(#False)
         ShowCursor_(#False)
      Else
         ReleaseMouse(#True)
         ShowCursor_(#True)
      EndIf
   EndIf

   Delay(10)
Until  Quit Or (GetKeyState_(#VK_ESCAPE)&%10000000 And GetActiveWindow() = pWnd)
mousethread(#False)
CloseScreen()
End
Modérateur
Config : Intel I5 4670K, Nvidia Geforce GTX 1060, 16go RAM, SSD 256go, DD 2000go
G-Rom
Messages : 3641
Inscription : dim. 10/janv./2010 5:29

Re: 2D ExamineMouse() SACCADE

Message par G-Rom »

Qu'appelle tu saccades ?
si tu bouge plus vite que ton écran peu rafraîchir , c'est normal. au pire, rajoute un delay(10) dans la boucle principale.
Avatar de l’utilisateur
Atlante
Messages : 337
Inscription : mer. 29/juin/2011 18:35
Localisation : Paris

Re: [RESOLVED]2D ExamineMouse() SACCADE

Message par Atlante »

C'est un problème matériel&OS&Pure Basic : réglé avec un thread pour choper la souris.

Je vous conseille de faire la modification dans vos jeux 2D, car les personnes qui ont des souris comme moi vont galérer avec vos jeux xD.
J'ai une souris Roccat Pyra.
Modérateur
Config : Intel I5 4670K, Nvidia Geforce GTX 1060, 16go RAM, SSD 256go, DD 2000go
Avatar de l’utilisateur
graph100
Messages : 1318
Inscription : sam. 21/mai/2005 17:50

Re: [RESOLVED]2D ExamineMouse() SACCADE

Message par graph100 »

ca me fait la même chose avec ma razer.
merci pour la solution ;)
_________________________________________________
Mon site : CeriseCode (Attention Chantier perpétuel ;))
Avatar de l’utilisateur
blendman
Messages : 2017
Inscription : sam. 19/févr./2011 12:46

Re: [RESOLVED]2D ExamineMouse() SACCADE

Message par blendman »

merci pour l'astuce.
Mais c'est valable ce problème de souris qui saccade en fullscreen ?
Avatar de l’utilisateur
Atlante
Messages : 337
Inscription : mer. 29/juin/2011 18:35
Localisation : Paris

Re: [RESOLVED]2D ExamineMouse() SACCADE

Message par Atlante »

blendman a écrit :merci pour l'astuce.
Mais c'est valable ce problème de souris qui saccade en fullscreen ?
Oui regarde le premier code, c'est du full screen ;) Et même en windows screen.
Je viens de re tester ça ma fait planter à moitié windows juste l’exemple mouse.
Modérateur
Config : Intel I5 4670K, Nvidia Geforce GTX 1060, 16go RAM, SSD 256go, DD 2000go
Avatar de l’utilisateur
blendman
Messages : 2017
Inscription : sam. 19/févr./2011 12:46

Re: [RESOLVED]2D ExamineMouse() SACCADE

Message par blendman »

ok. Donc la solution (à retoucher pour le fullscreen) fonctionne dans les 2 cas j'imagine ;).
Répondre