fb:porticula NoPaste
Simple SDL usage.
Uploader: | psygate |
Datum/Zeit: | 04.04.2010 22:51:10 |
#include "SDL\SDL.bi"
#include "SDL\SDL_gfx_primitives.bi"
'Pointer auf den Screen-Puffer
'Surfaces sind das A und O von SDL
dim shared video as SDL_Surface ptr
'Variable um Events abzufangen (Tastatureingaben, Tastenanschläge usw)
dim event as SDL_Event
'Initialisiere SDL, wenn das nicht geht, brich ab und beende das Programm
if SDL_Init(SDL_INIT_VIDEO) <> 0 then
print "Fehler: SDL konnte nicht initialisiert werden."
end 1
end if
''Initialisieren der Bildschirmausgabe.
''Ein einfaches Fenster, Vollbild ist zu groß.
''Sollte man Vollbild wollen, einfach "or SDL_FULLSCREEN" anhängen.
''SDL_HWSURFACE heißt, dass die Grafik im Videoram erzeugt wird.
''SDL_SWSURFACE wäre dann einfach ram.
''SDL_DOUBLEBUF erzeugt zwei Pages, um flickering zu verhindern.
video = SDL_SetVideoMode(640,480,24, SDL_HWSURFACE or SDL_DOUBLEBUF)
'Checken ob euch wirklich der VideoMode erzeugt wurde
if video = NULL then
print "Fehler. SDL konnte den VideoMode nicht aktivieren."
end 2
end if
''Ein Bild wie einen Avatar könnte man nun einfach mit
'IMG_Load laden.
''Code dafür wäre:
'dim avatar as SDL_SURFACE ptr
'avatar = IMG_load(avatar.png)
''Gezeichnet kann das Ganze dann mit SDL_BlitSurface(start,startkoordinaten,Ziel, Zielkoordinaten) werden.
'SDL_BlitSurface(avatar,NULL,video,NULL)
''Und angezeigt wird das Ganze letzendlich mit
'SDL_Flip(video)
''und wenn man das Bild nicht mehr braucht, einfach mit
'SDL_FreeSurface(avatar)
''den Speicher Freigeben.
'Speichere Events in unserer event Variablen ab.
while 1
SDL_PollEvent(@event)
select case event.type
case SDL_KEYDOWN:
end
end select
'Etwas moderne Kunst mit Linien erzeugen:
lineRGBA(video,int(rnd*640),int(rnd*480),int(rnd*640),int(rnd*480),int(rnd*256),int(rnd*256),int(rnd*256),255)
SDL_Flip(video)
wend
'SDL beenden.
SDL_QUIT()