Sdl.init [`VIDEO];;
let (bpp, w, h) = (24, 700, 480);;
let screen = Sdlvideo.set_video_mode ~w:w ~h:h ~bpp:bpp [`HWSURFACE];;
let tux = Sdlloader.load_image "wall9.jpg";;
let tax = Sdlvideo.display_format tux;;
Sdlvideo.blit_surface ~dst:screen ~src:tax;;
Sdlvideo.flip screen;;
Sdltimer.delay 3000;;
Sdl.quit;;
OcamlSdl c'est bien, mais pas documenté pour un rond...
si qq'un peu m'éclairer, je suis vraiment un nOOb de chez nOOb...
# Re: [OCaml] Sdl et ecran tout noir, Beuuuuhh......
Posté par __caffeine__ . Évalué à 1.
Sans garantie aucune, ça fait longtemps que j'ai pas touché à SDL.
Sinon, tu es allé voir là: http://ocamlsdl.sourceforge.net/doc/html/Sdlvideo.html(...) ?
# Re: [OCaml] Sdl et ecran tout noir, Beuuuuhh......
Posté par Vivi (site web personnel) . Évalué à 1.
1) ne pas programmer en mettant des expressions en toplevel. C'est moche, ça ne se fait pas.
2) OcamlSDL n'est pas documenté car c'est un binding assez strict de SDL. La doc se trouve donc là -> http://sdldoc.csn.ul.ie/(...)
3) Tu as plusieurs fonctions qui ne sont pas appliquées ... forcèment ça ne marche pas. (ça t'apprendras à ne pas programmer en balancant des expressions comme ça, cf 1. :)
4) Voilà du code qui marche :
[^] # Re: [OCaml] Sdl et ecran tout noir, Beuuuuhh......
Posté par __caffeine__ . Évalué à 1.
gni ? c'est un peu abuser de dire ça quand même, ça s'est largement amélioré depuis l'époque où il fallait sacrifier un gnou pour que ça marche...
[^] # Re: [OCaml] Sdl et ecran tout noir, Beuuuuhh......
Posté par EmacsFR . Évalué à 1.
Il a l'air de maîtriser son sujet en OCaml et plus précisément OcamlSDL :)
[^] # Re: [OCaml] Sdl et ecran tout noir, Beuuuuhh......
Posté par __caffeine__ . Évalué à 2.
Bon, ceci dit, après le test suivant:
$ python
Python 2.3.3 (#2, Feb 24 2004, 09:29:20)
[GCC 3.3.3 (Debian)] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> import pygame
>>> from pygame.locals import *
>>> pygame .init()
(6, 0)
>>> pygame.display.get_driver()
'x11'
>>> screen = pygame.display.set_mode((468, 60),HWSURFACE | DOUBLEBUF)
>>> print screen
<Surface(468x60x32 SW)>
Je bats ma coulpe... J'avais pourtant cru lire que ça avait changé récemment.
Encore une raison de plus pour rester sur OpenGL...
[^] # Re: [OCaml] Sdl et ecran tout noir, Beuuuuhh......
Posté par Stephane Marchesin (site web personnel) . Évalué à 1.
[^] # Re: [OCaml] Sdl et ecran tout noir, Beuuuuhh......
Posté par Stephane Marchesin (site web personnel) . Évalué à 2.
(* 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)
[^] # Re: [OCaml] Sdl et ecran tout noir, Beuuuuhh......
Posté par Vivi (site web personnel) . Évalué à 1.
certes.
Pas exactement, flip c'est quand on utilise un double buffer uniquement.
oui mais s'il n'y a pas de double buffer (le cas ici), ça fait un update de tout l'écran.
Sinon, je pense que la raison pour laquelle le programme original ne marche pas
nonnon, s'il ne marche c'est parce qu'il manquait un argument au blit_surface, tout simplement (et au quit aussi).
DOUBLEBUF n'est pas supporté non plus par le driver x11 (et implique HWSURFACE de toutes façons).
[^] # Re: [OCaml] Sdl et ecran tout noir, Beuuuuhh......
Posté par EmacsFR . Évalué à 1.
let screen = Sdlvideo.set_video_mode ~w:w ~h:h ~bpp:bpp [`DOUBLEBUF];;
Mais qui a essayé de me faire apprendre le Caml ??? :)
[^] # Re: [OCaml] Sdl et ecran tout noir, Beuuuuhh......
Posté par rob . Évalué à 1.
Merci à tous.
ça t'apprendras à ne pas programmer en balancant des expressions comme ça
Effectivement. Avec le recul, je crois que tu as parfaitement cerner le problème. :-S.
Suivre le flux des commentaires
Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.