• [^] # Re: [OCaml] Sdl et ecran tout noir, Beuuuuhh......

    Posté par . En réponse au journal [OCaml] Sdl et ecran tout noir, Beuuuuhh....... Évalué à 2.

    let screen = Sdlvideo.set_video_mode ~w ~h ~bpp [] in
    (* pas de HWSURFACE, ça sert à rien avec le pilote x11 *)


    Si on considère que SDL se place dans une optique de portabilité, c'est mal de dire "ça ne marche pas chez moi, donc les autres n'en profiteront pas non plus". D'autant plus que d'autres backends sous linux supportent les surfaces h/w comme directfb, dga ou (celui qui-va-tout-dépoter-quand-il-sera-fini) le futur glSDL.

    Pour choisir d'utiliser ou non le flag HWSURFACE il faut considérer la manière dont ton application accède ) la surface vidéo le plus souvent (c'est-à-dire est-ce qu'elle accède directement à ses pixels, ou est-ce qu'elle y accède par l'intermédiaire de blits).

    Sdlvideo.update_rect screen ;
    (* ou flip, c'est pareil *)


    Pas exactement, flip c'est quand on utilise un double buffer uniquement.

    Sinon, je pense que la raison pour laquelle le programme original ne marche pas, c'est qu'il fait flip sur une surface video qui nest pas un double buffer. Donc il faudrait initialiser en demandant un double buffer. Ce qui donne en utilisant mes connaisssances très lointaines en caml :
    let screen = Sdlvideo.set_video_mode ~w:w ~h:h ~bpp:bpp [`DOUBLEBUF];;
    (en rajoutant aussi le flag HWSURFACE si c'est nécessaire, mais je n'irai pas jusqu'à retrouver le ou en caml)