Bonjour,
Savez-vous s'il est possible d'utiliser la SDL dans une fenêtre classique (TForm) avec Lazarus ?
Si oui, avez-vous un exemple de mise en œuvre ?
Un exemple :
Dans cet exemple, la partie vidéo est intégrée à une fenêtre classique.
Merci,
ZiP
Bonjour,
Savez-vous s'il est possible d'utiliser la SDL dans une fenêtre classique (TForm) avec Lazarus ?
Si oui, avez-vous un exemple de mise en œuvre ?
Un exemple :
Dans cet exemple, la partie vidéo est intégrée à une fenêtre classique.
Merci,
ZiP
Bonjour,
C'est la librairie SDL elle-même qui crée la fenêtre. On peut très bien arriver au même résultat sans utiliser Lazarus (uniquement Free Pascal + SDL).
Bonsoir M.Dlb,
Merci pour ces précisions.
Je vais essayer de trouver de la documentation.
ZiP
On trouve assez facilement de la documentation basée sur C/C++.
Concernant FreePascal, il existe des unités Pascal qui enveloppe les DLLs SDL. Le site http://www.freepascal-meets-sdl.net/ regroupe les fonctions qu'on peut utiliser avec FreePascal et les librairies fournies (si les fonctions ne sont pas implémentée par l'unité fournie, on peut toujours le faire manuellement ! )
Bonsoir,
Je continue mes recherches, je viens de trouver qu'il était possible d'utiliser une fenêtre TForm avec SDL via SDL_WINDOWID.
Par conséquent, je cherche actuellement des informations sur l'installation de la SDL et l'utilisation de celle-ci dans Lazarus.
Peut-être via ça : http://sourceforge.net/projects/sdl2fpc/
Tous conseils sont les bienvenus !
Je pourrais confirmer ou non par la suite si cette pratique fonctionne.
Merci,
ZiP
Bonsoir,
Il faut simplement ajouter l'unité "sdl" à votre projet avec la dernière version de Lazarus...
Voici un exemple (fait à l'arrache qui qui démontre que ça fonctionne) :
Je n'ai plus qu'à approfondir l'utilisation de la SDL que je découvre ce jour
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16 procedure TForm1.FormCreate(Sender: TObject); var Ecran : PSDL_Surface; r : PSDL_Rect; begin SDL_putenv(PChar('SDL_WINDOWID=' + IntToStr(Form1.Handle))); SDL_Init(SDL_INIT_VIDEO); Ecran := SDL_SetVideoMode(640, 480, 32, SDL_SWSURFACE or SDL_DOUBLEBUF); r^.x := 50; r^.y := 50; r^.w := 50; r^.h := 50; SDL_FillRect(Ecran, r, SDL_MapRGB(Ecran^.format, 0, 255, 0)); end;
Cordialement,
ZiP
Partager