Grafik med SDL
Tillbaka till artikelarkivet
SDL är ett bibliotek som gör det enkelt att använda grafik och annan media i dina program, i den här guiden visar jag hur du med hjälp utav SDL kan skapa enkla grafiska program i C++.
Navigation:
| Nästa del >
Text - 1 - Introduktion
introduktion
Den här guiden är riktad till den som vill lära sig att göra spel med hjälp av SDL, grundläggande kunskaper om C++ behövs för att kunna följa guiden. För att kunna följa
guiden behövs också en kompilator, använder du ett Windows OS måste du ha MinGW eller Microsoft Visual Studio. Använder du GNU/Linux använder du förslagsvis GCC
SDL står för Simple Directmedia Layer och är ett bibliotek (en massa funktioner) som är till för att göra spel mm. Det fina med SDL är att det fungerar på en hel massa
olika plattformar så som GNU/Linux, BSD, Windows, Dreamcast, Mac OS t.ex.
På SDLs hemsida,
http://www.libsdl.org finns mer info om du vill veta mer om SDL. Där kan man också ladda ner själva biblioteket.
Ladda ner SDL biblioteket
För att utveckla egna SDL behöver vi ladda ner "Development Libraries", gå således till SDL 1.2 under Download-sektionen i menyn. Scrolla sedan ner till "Development
Libraries" och ladda ner den versionen av biblioteket som passar dig, använder du Windows och Micosoft Visual C++ ska du t.ex. ha "SDL-devel-1.2.7-VC6.zip", använder du
GNU/Linux med en distrubtion som klarar RPM-filer (Rad Hat, Mandrake osv) laddar du förslagsvis ner "SDL-devel-1.2.7-1.i386.rpm" om inte så kan du ladda ner
"SDL-1.2.7.tar.gz" som finns överst på Download-sidan och kompilera biblioteket själv (läs INSTALL i tar.gz-filen för mer info). Du kan också försöka använda
installationssystem som är spcifikt för ditt system, t.ex. apt-get för debian.
Här kommer introduktionen dela sig i två olika delar, en för de som använder Windows och en för de som använder GNU/Linux.
Jag använder Windows
Om du använder Visual Studio så ska du som sagt ladda ner "SDL-devel-1.2.7-VC6.zip". Packa upp filen i C:/SDL med Winzip, Winrar eller liknande.
Starta sedan Visual Studio och gå till menyn Tools och välj Options.
Gå till Projects -> CV++ Directories (det kan ligga under lite olika ställen beroende på version av Visual Studio)
Välj sedan "Show directories for:" "Include files" och klicka därefter på New line.
![](http://www.blinkenlights.se//upload/167/vcppdirectories.jpg)
Skriv (eller browse:a) sedan till C:/SDL/SDL-1.2.7/include
Välj sedan "Show directories for:" "Library files" och lägg till en ny rad med värdet "C:\SDL\SDL-1.2.7\lib" (byt ut mot vart du lade SDL osv), avsluta sedan dialogen genom
att klicka på Ok.
Skapa nu ett nytt projekt genom att gå till File -> New -> Project ...
Välj att skapa ett "Win32 Console Project", välj att namnet ska vara SDL_test och klicka på Ok. När det kommer upp en ny dialogruta väljer du "Application Settings" och
kryssar i bocken "Empty Project".
Nu ska vi skriva själva programmet också, vad koden gör osv. Kommer jag gå igenom först i nästa del, högerklicka på "Source Files" i den högra panelen och gå till Add ->
Add new item.
![](http://www.blinkenlights.se//upload/166/newcppfile.jpg)
Välj att skapa en "C++ File (.cpp)" och döp den till main.
Klista sedan in denna koden i main.cpp:
#ifdef WIN32
#pragma comment(lib, "SDL.lib")
#pragma comment(lib, "SDLmain.lib")
#endif
#include "SDL.h"
int main(int argc, char *argv[])
{
if ( SDL_Init(SDL_INIT_AUDIO|SDL_INIT_VIDEO) < 0 ) {
fprintf(stderr, "Unable to init SDL: %s", SDL_GetError());
SDL_Quit( );
}
printf("SDL is working!");
SDL_Quit( );
return 0;
}
-
Nu är det bara två steg kvar innan vi kan börja programmera! Först måste du välja "Multi-threaded DLL" för att det ska gå att kompilera. För att göra detta så ska du
högerklicka på Projektets namn (SDL_test) i den högra panelen och välj Properties. Gå till C/C++ -> Code Generation. Här ska du sätta "Runtime Library" till
"Multi-threaded DLL (/MD)", klicka sedan på Ok.
Innan vi kan kompilera och köra måste vi lägga in SDL.dll i projektets rootkatalog så att programmet kan anropa funktionerna i DLLen. Kopiera således
C:\SDL\SDL-1.2.7\lib\SDL.dll till projektets katalog (Mina dokument -> Visual Studio Projects -> SDL_test).
Gå sedan tillbaka till Visual Studio och tryck Ctrl+Shift+B och hoppas på att det inte blir några felmedelanden
![Smiley](/styles/emoticons/wink.gif)
Om allt går väl ska du kunna köra programmet, vill du att det inte ska avslutas innan du hinner se vad som står kan du köra det genom kommandotolken, då gör du såhär:
Startmenyn -> Run, skriv cmd, klicka på Ok.
Du borde starta i "C:\Documents and Settings\Användarnamn", om inte, använd "cd" för att komma dit (du kan klicka på tab för att låta kommandotolken skriva sista biten av
katalognamnet, mycket smidigt).
Skriv sedan cd "My Documents", cd "Visual Studio Projects", cd SDL_test, cd Debug.
Kör sedan SQL_test.exe, voila!
Jag använder GNU/Linux
Gör en ny katalog samt skapa filerna "Makefile" och "main.cpp". I "Makefile" skriver du såhär:
SDL_CFLAGS := $(shell sdl-config --cflags)
SDL_LDFLAGS := $(shell sdl-config --libs)
AppName = MyApp
AppVersion = 0.1
MyProgram: main.cpp engine.cpp
g++ main.cpp engine.cpp -o $(AppName)-$(AppVersion) ${SDL_CFLAGS} ${SDL_LDFLAGS}
De fyra första raderna är variabler som sedan kommer att klistras in när den sista raden exekveras. SDL_CFLAGS och SDL_LDFLAGS är några parametrar som behövs för att SDL
ska fungera. AppName är helt enkelt programmets namn och AppVersion är programmets versionsnummer, dessa två variabler kommer utgöra det kompilerade programmets filnamn.
I "main.cpp" ska du skriva följande:
#include <stdlib.h>
#include "SDL.h"
int main(int argc, char *argv[])
{
if ( SDL_Init(SDL_INIT_AUDIO|SDL_INIT_VIDEO) < 0 ) {
fprintf(stderr, "Unable to init SDL: %sn", SDL_GetError());
exit(1);
}
atexit(SDL_Quit);
printf("SDL is working!");
return 0;
}
-
Skriv nu make i mappen där du skapade filerna, det borde inte bli några fel nu. Kolla extra noga i alla README-filer och liknande, fungerar det ändå inte så fråga i
forumen.
Nu har filen MyApp-0.1 (eller vad du nu döpte den till i Makefile), skriv "chmod u+x" för att ge dig rättigheter att exekvera filen, sedan skriver du bara ./MyApp-0.1 och
programmet borde då köras. Uppstår inga fel har du lyckats!
SDL Fungerar!
Om allt fungerar som det ska är det bara att klampa på med nästa del, är det något som saknas här, något som var svårt att förstå, något som var bra eller något annat du vill påpeka är det bara att skriva i forumet, skicka ett pm eller skicka ett mail.
Slut
Navigation:
| Nästa del >
Till toppen