Co tu można pomóc:
- Pobierz
http://downloads.sourceforge.net/project/jedi-sdl/JEDI-SDL%20v1.0%20Final%20RC%202/Zip%20File%20for%20all%20supported%20platforms/JEDI-SDLv1.0.zip
- Wypakuj do
c:\lazarus\components\JEDI-SDLv1.0\
- Otwórz w notatniku:
c:\lazarus\fpc\2.6.2\bin\x86_64-win64\fpc.cfg
zajdziesz w tym pliku linię
# searchpath for units and other system dependent things
i tam dodanych kilka ścieżek pod nimi dodaj:
-FiC:\lazarus\components\JEDI-SDLv1.0\SDL\Pas
-FuC:\lazarus\components\JEDI-SDLv1.0\SDL\Pas
-FuC:\lazarus\components\JEDI-SDLv1.0\SDL_Mixer\Pas
-FuC:\lazarus\components\JEDI-SDLv1.0\SDL_Image\Pas
-FuC:\lazarus\components\JEDI-SDLv1.0\SDL_Net\Pas
-FuC:\lazarus\components\JEDI-SDLv1.0\SDL_ttf\Pas
-FuC:\lazarus\components\JEDI-SDLv1.0\smpeg\Pas
-FuC:\lazarus\components\JEDI-SDLv1.0\SFont\Pas
-FuC:\lazarus\components\JEDI-SDLv1.0\SDL_Sound\Pas
-FuC:\lazarus\components\JEDI-SDLv1.0\SDLMonoFonts\Pas
-FuC:\lazarus\components\JEDI-SDLv1.0\SDLSpriteEngine\Pas
-FuC:\lazarus\components\JEDI-SDLv1.0\Cal3D\Pas
-FuC:\lazarus\components\JEDI-SDLv1.0\ODE\Pas
-FuC:\lazarus\components\JEDI-SDLv1.0\SDLCtrls\Pas
-FuC:\lazarus\components\JEDI-SDLv1.0\SDL_flic\Pas
i zapisz plik
- Wejdź na:
http://www.libsdl.org/download-1.2.php
i pobierz bibliotekę odpowiednią dla twojej wersji systemu (32 lub 64 bit)
- Wejdź na:
http://www.libsdl.org/projects/SDL_ttf/release-1.2.html
i pobierz bibliotekę odpowiednią dla twojej wersji systemu (32 lub 64 bit)
- Odpal Lazarus
New -> Project -> Program
Zapisz projekt i do folderu w którym zapisałeś wrzuć czcionkę i pobrane biblioteki DLL
Mój testowy (DZIAŁAJĄCY!) kod:
program project1;
{$mode objfpc}{$H+}
uses
sdl, SDL_TTF;
var
screen, fontface: pSDL_SURFACE;
loaded_font: pTTF_Font;
colour_font, colour_font2: pSDL_COLOR;
event: pSDL_EVENT;
done: Boolean;
begin
SDL_Init(SDL_INIT_VIDEO);
screen:= SDL_SetVideoMode(400, 200, 32, SDL_SWSURFACE);
if screen = nil then
Halt;
if TTF_Init = -1 then
Halt;
loaded_font:= TTF_OpenFont('ariblk.ttf', 18);
if loaded_font = nil then
Halt;
New(colour_font);
New(colour_font2);
colour_font^.r:=255;
colour_font^.g:=0;
colour_font^.b:=255;
colour_font2^.r:=0;
colour_font2^.g:=255;
colour_font2^.b:=0;
fontface:= TTF_RenderText_Shaded(loaded_font, 'HELLO'#0, colour_font^, colour_font2^);
done:= False;
while done = False do
begin
New(event);
while SDL_PollEvent(event) = 1 do
begin
case event^.type_ of
SDL_QUITEV: done:= True;
SDL_KEYDOWN: begin
if (event^.key.keysym.sym = SDLK_ESCAPE) then
done:= True;
end;
end;
end;
SDL_BlitSurface(fontface, nil, screen, nil);
SDL_Flip(screen);
Dispose(event);
end;
Dispose(colour_font);
Dispose(colour_font2);
SDL_FreeSurface(screen);
SDL_FreeSurface(fontface);
TTF_CloseFont(loaded_font);
TTF_Quit;
SDL_Quit;
end.
Kod jest napisany na podstawie Twojego dodałem tylko pętlę obsługi zdarzeń (właściwie komunikatów jak chodzi o Windows) aby nie "wisiał". Kod nie jest idealny (te Halt mogą powodować wycieki pamięci bo nie będzie wtedy nic zwalniane) ale mi się nie chciało już z tym bawić w końcu robiłem tylko test.
Jak dalej nie działa to ja nie wiem :/