Page 2 sur 2

Re: États souris et screen

Publié : sam. 26/sept./2015 20:44
par G-Rom
Fred l'a intégré comme une API > SDL_Init_()

Re: États souris et screen

Publié : sam. 26/sept./2015 20:56
par Joubarbe
Wow, il est fou ce type, il passe des heures à intégrer un truc aussi énorme et n'en fait aucune documentation :)

Je ne connaissais pas du tout SDL avant, d'où ma surprise. Ça paraît intéressant !

Re: États souris et screen

Publié : dim. 27/sept./2015 3:01
par Joubarbe
Je digresse un peu, mais faut-il faire quelque chose de particulier pour initialiser SDL, autre que SDL_Init_() ?

Code : Tout sélectionner

InitSprite() : InitKeyboard() : InitMouse()

OpenWindow(0, 0, 0, 800, 600, "")
OpenWindowedScreen(WindowID(0), 0, 0, 800, 600)

SDL_Init_(#SDL_INIT_EVERYTHING)
Global sdlEvent.SDL_Event

Repeat
  
  While WindowEvent() : Wend
  
  While SDL_PollEvent_(@sdlEvent)
    Debug "sdl event triggered"
  Wend
  
  ExamineKeyboard()
  
  ClearScreen(0)
  
  FlipBuffers()
  
Until KeyboardPushed(#PB_Key_Escape)
Ça me paraissait pas trop mal ça...

Re: États souris et screen

Publié : dim. 27/sept./2015 11:27
par G-Rom
Tu mélanges tout, il faut que tu ouvre un écran SDL pas PB.
regarde sur le net ou le forum , c'est pas la doc qui manque , meme PB a un exemple SDL qui dois trainer quelque part.

Re: États souris et screen

Publié : lun. 28/sept./2015 9:50
par blendman
@Joubarbe : tu souhaites afficher un curseur uniquement (ou alors, j'ai mal compris ce que tu veux faire précisément) ?
Pourquoi n'utilises-tu pas alors un simple sprite pour afficher le curseur ?
Comme ça, ça serait cross-platform.

Re: États souris et screen

Publié : lun. 28/sept./2015 11:04
par Joubarbe
J'ai en effet déjà essayé d'afficher un sprite et de passer par DesktopMouseX/Y() (ou WindowMouseX/Y()). Le problème est que lorsque tu ExamineMouse() sous Linux, le curseur hardware reste au milieu de l'écran. Et il me faut utiliser la bibliothèque Mouse pour avoir l'état "pushed". De plus, le fait d'afficher un sprite annule l'intérêt de la souris hardware, et ajoute cette sensation de latence (décalage entre le mouvement et ce qui est affiché) à la souris.

Malheureusement il ne semble pas avoir d'équivalence de ShowCursor_() sous Linux. Et même si c'était le cas, comme je l'ai dit, la souris, lorsqu'elle est capturée par un "screen", reste bloquée au milieu de l'écran. Et il me faut la bibliothèque Mouse pour avoir l'état "pushed" (Linux n'ayant apparemment pas d'évènement interne pour ça, contrairement à Window et son #WM_LBUTTONDOWN).

Re: États souris et screen

Publié : lun. 28/sept./2015 12:33
par G-Rom
si tu bidouilles un peu en c++ , la sfml utilise ceci comme implémentation
c'est basé sur la lib xcb , remplacant de xlib. https://fr.wikipedia.org/wiki/XCB

Code : Tout sélectionner

void WindowImplX11::setMouseCursorVisible(bool visible)
{
    const uint32_t values = visible ? XCB_NONE : m_hiddenCursor;

    ScopedXcbPtr<xcb_generic_error_t> error(xcb_request_check(
        m_connection,
        xcb_change_window_attributes(
            m_connection,
            m_window,
            XCB_CW_CURSOR,
            &values
        )
    ));

    if (error)
        err() << "Failed to change mouse cursor visibility" << std::endl;

    xcb_flush(m_connection);
}

Re: États souris et screen

Publié : jeu. 08/oct./2015 12:01
par blendman
G-Rom a écrit :Sous linux , la souris est completement buggé...
la souris avec initmouse() est buguée sous linux ?
il vaut mieux ne pas l'utiliser ?