SDL Cursor verschwindet manchmal



  • Immer wenn ich meinen Cursor nicht bewege, verschwindet er.
    Auch wenn ich auf einen Bereich gehe, wo ein Bild hingeladen ist, sieht es so aus, als ob der Cursor hinterm Bild verschwindet.
    Was kann ich dagegen tun? Gibt es eine Funktion die den Cursor neu zeichnet?

    Stratege993

    p.s. SDL_ShowCursor(SDL_ENABLE) habe ich schon probiert, hilft aber nichts.



  • das schaltet den cursor auch nur grundsätzlich ab oder an.
    zeichnest du mit ogl/dx? etwas code wäre ganz praktisch 🙂



  • Also ich arbeite nicht mit Opengl, also dann warscheinlich mit dx (was das auch immer ist 🙄 , ich fange erst grade mit sdl an). Ich poste mal meinen Grundsätzlichen aufbau, meines kleinen Programmes:

    main ()
    {
        SDL_Init(SDL_INIT_AUDIO|SDL_INIT_VIDEO);
        atexit(SDL_Quit);
    
        GFenster = SDL_SetVideoMode(WindowWidth, WindowHeight, 32, SDL_SWSURFACE | SDL_DOUBLEBUF | SDL_FULLSCREEN);
        SDL_WM_SetCaption("Game", NULL);
    
        while(GameEnd!=false)
        {
            //Ansich leeren
            SDL_FillRect (SDL_GetVideoSurface(), NULL,0);
    
            //Viele dinge werden aus Datein Hingemalt
    
            temp = "data\\blabla.bmp";                  
            bild = SDL_LoadBMP(temp);            
            ziel.x = 30;
            ziel.y = 30;
            ziel.w = 40;
            ziel.h = 40;
            SDL_SetColorKey(bild, SDL_SRCCOLORKEY, SDL_MapRGB(bild->format, 255, 0, 255));
            SDL_BlitSurface(bild, NULL, screen, &ziel);
            SDL_UpdateRects(screen, 1, &ziel);
            SDL_FreeSurface(bild); 
            //Das wird einige male gemacht
    
            //Text wird noch ausgegeben
    
            //gemalte Fläche anzeigen               
            SDL_Flip(GFenster);
        }
    }
    

    Also ich will nicht alles posten, also habe ich es stark verkürzt. Hoffe ihr könnt mir helfen.

    Auserdem würde ich gerne wissen, warum der Doublebuffer-Modus blos im Fullscreen funktiniert, und was ich dagegen tun kann.

    Danke schon im Vorraus für euere Hilfe.



  • dx ist DirectX, das kennst du bestimmt 😉

    Der DoubleBuffer funktioniert generell nur mit Hardware-Surfaces:

    SDL_SetVideoMode(WindowWidth, WindowHeight, 32, SDL_HWSURFACE | SDL_DOUBLEBUF | SDL_FULLSCREEN);


Anmelden zum Antworten