Serwis Edukacyjny
Nauczycieli
w I-LO w Tarnowie

obrazek

Materiały dla uczniów liceum

  Wyjście       Spis treści       Dalej  

©2019 mgr Jerzy Wałaszek
I LO w Tarnowie

obrazek

obrazek

Autor artykułu: mgr Jerzy Wałaszek

 

 

SDL2

Instalacja oprogramowania

Rozdziały:
    Instalacja
    Typy danych
    Grafika rastrowa
    Okno
    Kontekst graficzny
    Punkty
    Odcinki
    Figury
    Algorytm Bresenhama
    Wypełnianie figur
    Wypełnianie obszarów
    Wypełnianie obszarów algorytmem Smitha
    Przezroczystość
    Zdarzenia

     Interfejs SDL2 wg nazw
     Interfejs SDL2 wg kategorii
W rozdziale:
Co to jest SDL?
Co to jest OpenGL?
Co to jest Code Blocks?
Instalacja Code Blocks dla Windows
Instalacja Code Blocks dla Ubuntu
Instalacja SDL 2 dla Windows
Instalacja SDL 2 dla Ubuntu

 

Co to jest SDL?

SDL jest skrótem angielskiej nazwy Simple Directmedia Layer, czyli po naszemu: Prosta Warstwa Bezpośredniej Obsługi Mediów. Jest to biblioteka procedur, które napisał oryginalnie Sam Oscar Latinga w 1998 roku,  pracownik w firmie Loki Software zajmującej się przenoszeniem gier komputerowych pomiędzy różnymi platformami. Praca tego typu jest dosyć trudna, ponieważ platformy różnią się szczegółami obsługi grafiki, dźwięku, urządzeń we/wy oraz innymi składnikami. Sam postanowił napisać własną bibliotekę, z którą użytkownik będzie się komunikował w ten sam sposób niezależnie od platformy, a procedury biblioteczne zajmą się tłumaczeniem poleceń programu użytkownika na odpowiednie wywołania funkcji systemowych. Dzięki temu, pisząc program z wykorzystaniem biblioteki SDL, nie będziesz go musiał każdorazowo dostosowywać do innej platformy (no, prawie). Dodatkową zaletą jest to, że nasz kurs nie będzie rozróżniał systemu operacyjnego Windows i Linuks.

Aby to zadziałało musisz posiadać wersję biblioteki SDL odpowiednią dla systemu operacyjnego, na którym pracujesz. Sposób komunikacji z biblioteką SDL jest taki sam. Wiele rzeczy biblioteka robi za ciebie, dzięki czemu twój program stanie się prostszy i bardziej przejrzysty niż gdyby był pisany pod docelowy system operacyjny. Programy pisane pod SDL są nieco wolniejsze od tych, które bezpośrednio współpracują z systemem, lecz jest to praktycznie niezauważalne – współczesne komputery są zbyt szybkie – a i tak 99% czasu komputer czeka, aż użytkownik coś zrobi.

Biblioteka SDL została napisana w języku C (Unix, Linux i Windows też), jednak wspiera środowisko programowania w C++ (inne języki też, ale tym nie będziemy się tutaj zajmować). Daje niskopoziomowy dostęp do różnych urządzeń (myszka, joystick, kontrolery gier, klawiatura, sprzęt 3D, bufor ekranu, odtwarzanie dźwięku, liczniki czasu, wątki, itp.). SDL było stosowane w wielu grach komputerowych, np. Neverwinter Nights, Second Life. Użyto je przy konwersji do systemu Linuks takich kultowych pozycji jak: Quake 4, Soldier of Fortune czy Civilisation.  Krąg zastosowań SDL nie ogranicza się jedynie do gier komputerowych. Można je używać wszędzie tam, gdzie potrzebna jest dobra grafika lub obsługa urządzeń wejścia/wyjścia.

Biblioteka SDL składa się z ponad 500 funkcji, których opis znajdziesz w rozdziałach: Interfejs SDL2 wg nazw oraz Interfejs SDL2 wg kategorii.

Aby efektywnie skorzystać z tego kursu, musisz już umieć programować w języku C++. Nauką programowania tutaj się niestety nie zajmujemy, chociaż niektóre zagadnienia wyjaśniam dla początkujących programistów.

 

Co to jest OpenGL?

OpenGL jest skrótem angielskiej nazwy Open Graphic Library, co tłumaczy się jako Otwarta Biblioteka Graficzna. Jest to interfejs programowy, który umożliwia tworzenie zaawansowanej grafiki trójwymiarowej. Biblioteka korzysta z akceleratora grafiki (jest to element karty graficznej komputera, który sprzętowo tworzy obraz trójwymiarowy), dzięki czemu grafika 3D jest tworzona szybko, praktycznie w czasie rzeczywistym. Zaletą OpenGL jest przenośność. Windows posiada własny system obsługi grafiki 3D, zwany DirectX, jednakże jest on własnością firmy Microsoft. Programując w OpenGL możesz tworzyć programy graficzne, które będą działały na wielu różnych platformach, ponieważ standard tej biblioteki jest szeroko rozpowszechniony. Podobnie jak SDL nie będziemy musieli zważać na system operacyjny, co jest wielką zaletą OpenGL.

Biblioteką OpenGL i jej współpracą z SDL 2 zajmiemy się w dalszych  rozdziałach artykułu.

 

Co to jest Code Blocks?

Code Blocks jest wygodną, darmową i legalną aplikacją do tworzenia programów w języku C i C++. Jest to tzw. zintegrowane środowisko programowania IDE (ang. Integrated Developement Environment), zawierające edytor kodu z kolorowaniem składni, kompilator oraz program uruchomieniowy. Praca w środowisku zintegrowanym jest bardzo wygodna i szybka, ponieważ bierze ono na siebie wiele operacji, które programista musiałby wykonywać ręcznie, pracując bez takiego środowiska.

Istnieją wersje Code Blocks dla systemów Windows oraz Linuks, które w obu tych systemach wyglądają i działają praktycznie tak samo. Korzystając z podanych niżej instrukcji, zainstaluj na swoim komputerze Code Blocks.

 

Instalacja Code Blocks dla Windows

Instalację wykonamy dla wersji 32-bitowej kompilatora MinGW, w który standardowo jest wyposażane Code Blocks. Kompilator MinGW istnieje również w wersji 64-bitowej, ale sprawia ona wiele kłopotów, z którymi poradzić sobie może jedynie doświadczony programista, dlatego zrezygnowałem z opisu instalacji MinGW-W64: opisy takie znajdziesz w Internecie, ale, jeśli naprawdę nie musisz, to zostaw na razie ten kompilator w spokoju. Musi upłynąć jeszcze trochę czasu, zanim wersja 64-bitowa zostanie w pełni dopracowana. Wersja 32-bitowa działa bezproblemowo w systemie 64-bitowym Windows i współpracuje gładko z bibliotekami SDL 2 i OpenGL. Zasady pracy z wersjami 32-bitowymi są identyczne jak przy wersjach 64-bitowych, a korzyści tych drugich ujawniają się dopiero przy rozmiarach danych przekraczających 4GB, a to baaardzo dużo.

Jeśli masz już zainstalowane środowisko Code Blocks z kompilatorem MinGW, to przejdź do rozdziału opisującego instalację SDL 2.

Poniższy opis dotyczy instalacji CodeBlocs 16.01 w systemie Windows 10. Dla innych systemów Windows instalacja jest praktycznie identyczna.

Pobranie instalatora

Przejdź do strony:

Wybierz opcję:

Download the binary release

Spowoduje to przejście do strony pobierania aplikacji. U samej góry wybierz swój system operacyjny, mianowicie Windows XP / Vista / 7 / 8.x / 10.  Dla systemu Windows dostępne jest kilka wersji instalatora CodeBlocks. Dla naszych potrzeb należy wybrać instalator z kompilatorem MingW. W przypadku wersji 16.01 będzie to plik o nazwie codeblocks-16.01mingw-setup.exe. Po prawej stronie wybierz źródło ładowania: Sourceforge.net. Przejdziesz w ten sposób do witryny Sourceforge, z której zostanie automatycznie załadowany instalator CodeBlocks. Jeśli twoją przeglądarką sieci jest Firefox, to pojawi się okienko:

obrazek

W oknie wybierz przycisk Zapisz plik. Plik zostanie pobrany i zapisany na twoim dysku w katalogu przeznaczonym na odczytane z sieci pliki (zależy on od ustawień przeglądarki Firefox).

Instalacja

Uruchom instalator. Zaczną się pojawiać kolejne okienka dialogowe instalacji. Poniżej masz przetłumaczoną ich treść. Jest to typowy proces instalacyjny i, jeśli nie masz jakiś specjalnych powodów, to po prostu zatwierdzaj okienka klikając na przycisk Next.

obrazek Witaj w Programie Instalacyjnym CodeBlocks

 

Program instalacyjny poprowadzi cię poprzez instalację CodeBlocks.

Zalecane jest zamknięcie wszystkich innych aplikacji
przed uruchomieniem instalacji. Pozwoli to uaktualnić istotne
pliki systemowe bez potrzeby ponownego uruchomienia komputera.

Aby kontynuować, kliknij na Dalej.





  Dalej >    Anuluj  

obrazek Zgoda licencyjna

Proszę przeglądnąć warunki licencji przed instalacją CodeBlocks.


Naciśnij klawisz PgDn, aby zobaczyć resztę zgody licencyjnej.

[Treść licencji GNU]

Jeśli zgadzasz się na warunki zgody licencyjnej, kliknij przycisk Zgadzam się. Musisz zaakceptować
zgodę licencyjną, aby zainstalować CodeBlocks.






  < Wstecz     Zgadzam się    Anuluj  

obrazek Wybierz Składniki

Wybierz, które cechy CodeBlocks chcesz zainstalować.


Zaznacz składniki, które chcesz zainstalować, a skazuj zaznaczenie dla tych, których nie chcesz
instalować. Kliknij Dalej, aby kontynuować.

Wybierz rodzaj instalacji: Pełna instalacja: wszystkie wtyczki, wszystkie narzędzia, po prostu wszystko
Lub wybierz opcjonalne
składniki, które chcesz
zainstalować
 

[ Drzewo składników]

Wymagane miejsce: 229,6MB Opis
Umieść kursor myszki ponad składnikiem, aby zobaczyć jego opis.


  < Wstecz     Dalej >    Anuluj  

obrazek Wybierz Miejsce Instalacji

Wybierz katalog, w którym zostanie zainstalowane CodeBlocks.


Program instalacyjny zainstaluje CodeBlocks w następującym katalogu. Aby zainstalować w innym, kliknij
przycisk Przeglądaj... i wybierz inny katalog. Kliknij przycisk Instaluj, aby rozpocząć instalację.

Katalog Docelowy

[C:\Program Files (x86)\CodeBlocks ] [ Przeglądaj... ]

Wymagane miejsce: 229,6MB
Dostępne miejsce: 749,6GB


  < Wstecz     Instaluj >    Anuluj  

obrazek Instalowanie

Proszę poczekać w trakcie instalacji CodeBlocks.











  < Wstecz     Dalej >    Anuluj  

obrazek Instalacja Zakończona

Instalacja zakończyła się sukcesem.











  < Wstecz     Dalej >    Anuluj  

obrazek Kończenie Instalacji CodeBlocks
 

CodeBlocks zostało zainstalowane na twoim komputerze.

Kliknij przycisk Zakończ, aby zakończyć program instalacyjny.

 

 

 

 

 



  < Wstecz     Zakończ >    Anuluj  

Gdy instalacja się zakończy, należy sprawdzić jej poprawność.

Uruchom CodeBlocks.

obrazek

Gdy uruchomisz je po raz pierwszy, to wyszuka ono na twoim dysku wszystkie kompilatory C++, z którymi potrafi współpracować. Pojawi się okno dialogowe:

obrazek

Na liście znalezionych kompilatorów powinien występować kompilator GNU GCC Compiler. To jest właśnie MinGW. Zaznacz go i kliknij w przycisk Set as default (wybierz jako standardowy). Kliknij w przycisk OK, aby zatwierdzić ten wybór. Przed uruchomieniem IDE aplikacja wyświetli następujące okno dialogowe:

obrazek

Ustawia się tutaj skojarzenia plików źródłowych C i C++ ze środowiskiem CodeBlocks. Pozostaw okienko bez zmian, chyba że dokładnie wiesz co i dlaczego robisz. Kliknij przycisk OK. Pojawi się okno startowe.

obrazek

Przygotuj na swoim dysku katalog na projekty programów. Ja taki katalog utworzyłem sobie na dysku D:\cprj.

obrazek

Gdy masz już taki katalog, w oknie startowym kliknij opcję Create a new project (utwórz nowy projekt). Pojawi się okienko tworzenia nowego projektu z szablonu:

obrazek

Zaznacz Console application i kliknij przycisk Go. Pojawi się kolejne okno dialogowe, które w sumie jest zbędne i możesz je w przyszłości pominąć, zaznaczając Skip this page next time (pomiń tę stronę następnym razem).

obrazek

Kliknij przycisk Next. W następnym oknie wybierasz język programowania. Zaznacz C++.

obrazek

Kliknij Next. Następne okno ustala nazwę projektu oraz katalog, w którym projekt zostanie utworzony.

obrazek

W polu Project title (tytuł projektu) wpisz nazwę dla swojego projektu, np. test. W polu Folder to create project in (katalog na projekt) wpisz pełną ścieżkę do katalogu, który wcześniej sobie utworzyłeś na dysku. U mnie jest to D:/cprj, ale u ciebie katalog może być w innym miejscu i mieć inną nazwę. Pozostałych dwóch pól nie zmieniaj, kliknij w przycisk Next.

Następne okienko wybiera kompilator oraz konfigurację uruchomieniową. Nic tu nie zmieniaj, kliknij Finish.

obrazek

Konfiguracja Debug (odpluskwianie) jest używana przy testowaniu programu. Standardowo zostaje ona ustawiona na początku pracy nad projektem (później możesz ją sobie zmienić). W tym trybie kompilator umieszcza w kodzie programu różne dodatkowe informacje (np. nazwy zmiennych i funkcji) dla Debuggera, czyli programu uruchomieniowego, który pozwala śledzić wykonywanie się programu i w ten sposób wyszukiwać błędy. W konfiguracji Release (wydawnicza) informacje te nie są umieszczane. Program nie może być śledzony za pomocą Debuggera. Konfigurację tą stosuje się, gdy błędy zostały już usunięte i program jest gotowy do dystrybucji.

Projekt został utworzony. Okno robocze CodeBlocks podzielone jest na kilka obszarów.

obrazek

U góry znajduje się standardowo menu oraz różne paski narzędziowe. Z lewej strony jest panel Management (zarządzanie) z różnymi elementami (jeśli nie widzisz tego panelu, to wciśnij klawisze Shift+F2). Standardowo widać tutaj drzewo projektu. Na spodzie jest panel, w którym środowisko wyświetla komunikaty i logi (jeśli brak panelu, naciśnij klawisz F2). Główną część okna zajmuje edytor kodu. Na początku okno edytora jest puste.

W panelu po lewej stronie kliknij w znak + obok Sources (źródła). Gałąź się rozwinie i powinieneś zobaczyć plik źródłowy main.cpp:

obrazek

Kliknij w ten plik dwukrotnie lewym przyciskiem myszki. Plik zostanie otwarty w edytorze:

obrazek

Edytor koloruje składnię poleceń w języku C++, dzięki czemu program wygląda bardziej czytelnie. U ciebie kolory mogą być inne, nie jest to ważne – ma się zgadzać treść. Na potrzeby testu nic nie musisz w tym programie zmieniać. Zwróć uwagę, że tekst w cudzysłowach jest podkreślony czerwonym wężykiem. Edytor ma włączone sprawdzanie pisowni i słów Hello oraz world nie rozpoznaje. Sprawdzanie pisowni jest czasami użyteczne. Jeśli jednak cię denerwuje, to możesz je łatwo wyłączyć. Z menu wybierz opcję Settings → Editor... Pojawi się okno dialogowe ustawień edytora. W bocznym panelu po lewej stronie wybierz sekcję Spellchecker i wyłącz trzy opcję sprawdzania pisowni u góry okienka:

obrazek

Zatwierdź zmiany kliknięciem w przycisk OK. Podkreślenie powinno zniknąć z tekstu w edytorze.

Naciśnij klawisz F9. Program zostanie skompilowany i uruchomiony. Jeśli wszystko jest w porządku, pojawi się okno konsoli:

obrazek

Środowisko CodeBlocks masz gotowe do pracy. Teraz przejdź do dalszej części rozdziału, gdzie jest opisany sposób instalacji SDL 2.

 

Instalacja Code Blocks dla Ubuntu

Poniższy opis dotyczy instalacji CodeBlocks w systemie Ubuntu. Dla innych dystrybucji Linuksa skonsultuj się ze witryną www.codeblocks.org (język angielski). Użytkownicy Linuksa są zwykle bardziej obeznani z komputerem od użytkowników Windows i raczej nie powinni mieć większych kłopotów z instalacją programów.

Szybki sposób instalacji CodeBlocks w Ubuntu to skorzystanie z repozytorium (Ubuntu Software), gdzie aplikację tę znajdziemy pod Narzędzia programistyczne → Zintegrowane środowiska programistyczne:

obrazek

Mankamentem tego rozwiązania jest to, iż otrzymamy w ten sposób starszą wersję CodeBlocks (13...). Do nauki programowania w C i C++ jest ona zupełnie wystarczająca i możesz na niej poprzestać. Jednak, jeśli chciałbyś mieć najnowszą wersję tego środowiska, to postępuj wg poniższych wskazówek:

Przejdź do strony projektu CodeBlocks, którą znajdziesz pod adresem: http://www.codeblocks.org.

W menu u góry okna wybierz opcję Downloads. Przeniesie cię ona do strony pobierania plików. Tutaj wybierz Download the binary release. Odszukaj swoje Ubuntu (32-bitowe lub 64-bitowe). Znajdziesz tam prywatne archiwum pakietów PPA (ang. Personal Package Archives). Przejdź do strony tego archiwum.. Na stronie poszukaj nagłówka: Adding this PPA to your system (Dodawanie tego PPA do twojego systemu). Pod nagłówkiem powinien znajdować się gdzieś wpis określający archiwum. Np dla CodeBlocks 16.01 jest to:

ppa:damien-moore/codeblocks-stable

Zapisz sobie to lub skopiuj do schowka. Uruchom terminal, naciskając klawisze Ctrl+Alt+T. Wpisz do niego trzy polecenia:

 
sudo add-apt-repository ppa:damien-moore/codeblocks-stable
sudo apt-get update
sudo apt-get install codeblocks

 

W pierwszym poleceniu umieść odczytane ze strony archiwum PPA (w przyszłości może być inne niż tu podane). Po pierwszym poleceniu sudo (ang. Substitute User DO) komputer zażąda hasła dla konta. Polecenie nie powiedzie się, jeśli twoje konto nie może uruchamiać poleceń sudo. Oznacza to zwykle, że nie jesteś właścicielem komputera i nie posiadasz odpowiednich uprawnień. Linux jest w tym bardzo konsekwentny.

Jeśli instalacja się powiedzie, to uruchom CodeBlocks, wpisując w terminalu polecenie:

 
codeblocks

obrazek

Gdy aplikacja się uruchomi, wybierz w menu opcje: Settings → Environment...

obrazek

W okienku dialogowym w polu Terminal to launch console programs (terminal do uruchamiania programów konsolowych) zamień wpis xterm -T $TITLE -e na gnome-terminal $TITLE -x. Dostaniesz terminal Gnome, który wygląda graficznie o wiele lepiej od standardowego xterm.

Aby program mieć stale pod ręką, kliknij prawym przyciskiem myszki jego ikonę na panelu uruchamiania i z menu kontekstowego wybierz opcję Dodaj do panelu uruchamiania. Opcja ta nie jest konieczna. Program zawsze można uruchomić, klikając ikonę Znajdź (pierwsza od góry na panelu uruchamiania) i wpisując kilka pierwszych liter nazwy codeblocks.

Teraz przygotujemy sobie miejsce na dysku na przyszłe projekty. Uruchom menadżera plików. W panelu bocznym wybierz Katalog domowy i utwórz w nim nowy folder o nazwie prj (lub o jakiejś innej, która ci się podoba).

obrazek

Po tej operacji możesz zamknąć menadżera plików. Wróć do CodeBlocks. Na stronie głównej wybierz Create a new project (utwórz nowy projekt). Otworzy się okienko wyboru typu projektu.

obrazek

Wybierz Console application i kliknij przycisk Go. Aplikacja konsoli pracuje w terminalu, czyli w okienku tekstowym. Jest to najprostszy tryb pracy aplikacji, dlatego używa się go przy nauce programowania, ponieważ uczeń nie musi walczyć z zawiłościami interfejsu graficznego tworzonej przez siebie aplikacji.

obrazek

Następne okno dialogowe informuje cię o rodzaju tworzonego projektu. Jeśli w przyszłości nie chcesz go otrzymywać (jest zbędne i ja zwykle się go pozbywam), to zaznacz opcję Skip this page next time (pomiń tę stronę następnym razem). Kliknij w Next.

obrazek

W następnym okienku dialogowym wybieramy język programowania, w którym chcemy napisać swój program. Tutaj wybierz C++ i kliknij w Next.

W kolejnym oknie dialogowym wpisz w polu Project title (nazwa projektu) wybraną przez siebie nazwę dla projektu, np. test. W drugim polu Folder to create project in (katalog do utworzenia w nim projektu) wpisz ścieżkę do katalogu, który wcześniej utworzyłeś w katalogu domowym na projekty programów w C++. Podana ścieżka dotyczy mojego komputera. U ciebie będzie inaczej. Jeśli nie pamiętasz tej ścieżki, to kliknij w przycisk [...] i wybierz właściwy katalog w menadżerze plików:

obrazek

Pozostałych pól nie zmieniaj, kliknij w Next.

obrazek

Na tej stronie określa się kompilator dla projektu oraz dostępne konfiguracje: uruchomieniową Debug oraz ostateczną Release. Na razie nie ma to większego znaczenia, zatem nic nie zmieniaj, kliknij w Finish. Spowoduje to utworzenie projektu o nazwie test. W każdym projekcie znajduje się plik źródłowy, w którym umieszcza się program startowy, czyli taki, który będzie wykonywany po uruchomieniu programu. Standardowo plik ten nosi nazwę main.cpp. Aby się do niego dostać, rozwiń gałąź Source w lewym panelu:

obrazek

Kliknij dwukrotnie myszką nazwę main.cpp. Plik zostanie załadowany do edytora i będziesz miał możliwość jego edycji.

obrazek

Program kompilujesz i uruchamiasz przez naciśnięcie klawisza F9. Jeśli wszystko jest w porządku, to pojawi się okno terminala z napisem:

obrazek

To kończy instalację CodeBlocks, przejdź dalej w tym rozdziale, aby doinstalować bibliotekę SDL 2.

 

Instalacja SDL 2 dla Windows

Opis dotyczy instalacji biblioteki SDL 2 dla środowiska CodeBlocks z kompilatorem MinGW w wersji 32-bitowej w systemie Windows.

Przejdź do strony o poniższym adresie:

W sekcji Development Libraries wyszukaj plik dla kompilatora MinGW i pobierz go na swój dysk:

obrazek

Otwórz pobrane archiwum za pomocą WinRAR'a:

obrazek

 

Wewnątrz znajduje się katalog ze wszystkimi elementami niezbędnymi do programowania SDL 2. Rozpakuj go na swój dysk twardy.

Przejdź do rozpakowanego katalogu na swoim dysku twardym. Wewnątrz znajdziesz kilka katalogów oraz plików tekstowych:

obrazek

Nas będzie interesował katalog i686-w64-mingw32. Zawiera on biblioteki oraz pliki nagłówkowe dla 32-bitowego kompilatora MinGW w 64-bitowym środowisku Windows.

Otwórz ten katalog.

Wewnątrz znajdziesz cztery katalogi:

obrazek

Przekopiuj katalogi include oraz lib do katalogu, w którym jest zainstalowany kompilator MinGW w CodeBlocks:

obrazek

Uruchom CodeBlocks i utwórz projekt aplikacji konsoli (konsola jest przydatna w razie błędów, bo programy wypisują w niej przyczynę niepowodzenia):

obrazek

Wybierz dla projektu jakąś nazwę (pole Project title) oraz miejsce na dysku (pole Folder to create project in):

obrazek

Pozostaw wybrane obie konfiguracje Debug i Release:

obrazek

Gdy projekt zostanie utworzony, załaduj do edytora plik main.cpp.

Zmień napis Hello na Debug:

 

#include <iostream>

using namespace std;

int main()
{
    cout << "Debug" << endl;
    return 0;
}

 

Skompiluj i uruchom program przez naciśnięcie klawisza F9 lub kliknięcie ikony obrazek. W wyniku tej operacji w katalogu projektu zostanie utworzony katalog bin\Debug, a w nim znajdzie się skompilowany program.

W rozpakowanym katalogu i686-w64-mingw32\bin znajdziesz plik SDL2.dll. Skopiuj go do katalogu bin/Debug w swoim projekcie:

obrazek

Teraz skonfigurujemy kompilator dla konfiguracji uruchomieniowej Debug.

Z menu wybierz opcję Project → Properties:

obrazek

W okienku własności projektu kliknij w przycisk Project's build options...:

obrazek

Zwróć uwagę, aby nie była zaznaczona żadna z konfiguracji Debug i Release, jak na powyższym obrazku.

Wybierz zakładkę Linker settings i w polu Other linker options wpisz:

 

-lmingw32 -lSDL2main -lSDL2

 

Wybierz zakładkę Search directories.

Kliknij w przycisk Add.

Gdy pojawi się okienko dialogowe dodawania katalogu, kliknij w przycisk z trzema kropkami.

obrazek

Wyszukaj katalog CodeBlocks, otwórz go, wejdź do katalogu MinGW, otwórz katalog include i kliknij w SDL2.

obrazek

Zatwierdź wybór kliknięciem w OK.

Następne okienko zatwierdź kliknięciem w Nie:

obrazek

W polu tekstowym pojawi się pełna ścieżka do katalogu SDL2 z plikami nagłówkowymi:

obrazek

Zatwierdź okienko kliknięciem w OK.  Wybrany katalog pojawi się na liście przeszukiwanych katalogów.

obrazek

Przeszukiwane katalogi to takie, w których kompilator szuka plików nagłówkowych, jeśli nie znajdzie ich w swoim katalogu include.  Ten krok nie jest niezbędny. Ponieważ skopiowaliśmy katalog SDL2 do katalogu include kompilatora MinGW, to dostęp do plików nagłówkowych może wyglądać też tak:

#include <SDL2\SDL.h>

Zatwierdź okna kliknięciem w OK. Konfiguracja ustawiona. Teraz sprawdzimy, czy wszystko działa.

Z menu wybierz opcję Build → Select target→ Debug.

W edytorze wpisz program testowy:

 

// Test SDL2

#include <SDL.h>
#include <iostream>

using namespace std;

//Rozmiar okienka
const int SCREEN_WIDTH = 320;
const int SCREEN_HEIGHT = 240;

int main(int argc, char* args[])
{

	// Okno robocze
	SDL_Window * window = NULL;

	// Powierzchnia graficzna okna
	SDL_Surface * screenSurface = NULL;

	// Inicjujemy SDL
	if(SDL_Init(SDL_INIT_VIDEO) < 0 )
	{
		cout << "SDL niezainicjowane! SDL_Error: " << SDL_GetError() << endl;
	}
	else
	{
		// Tworzymy okno
		window = SDL_CreateWindow("Okienko SDL", SDL_WINDOWPOS_CENTERED,
                      SDL_WINDOWPOS_CENTERED, SCREEN_WIDTH, SCREEN_HEIGHT, SDL_WINDOW_SHOWN);
		if(!window)
		{
			cout << "Okno nieutworzone! SDL_Error: " << SDL_GetError() << endl;
		}
		else
		{
			// Uzyskujemy dostęp do powierzchni graficznej okna
			screenSurface = SDL_GetWindowSurface(window);

			// Wypełniamy ją kolorem czerwonym
			SDL_FillRect(screenSurface, NULL, SDL_MapRGB(screenSurface->format, 0xFF, 0, 0));

			// Uaktualniamy powierzchnię
			SDL_UpdateWindowSurface(window);

			// Czekamy 3 sekundy
			SDL_Delay(3000);
		}
	}

	// Usuwamy okno
	SDL_DestroyWindow(window);

	//Kończymy pracę z SDL
	SDL_Quit();

	return 0;
}

 

Skompiluj i uruchom program przez naciśnięcie klawisza F9 lub kliknięcie ikony obrazek. Jeśli nie popełniłeś błędu, to na ekranie powinno na trzy sekundy pojawić się małe okno z czerwonym tłem:

obrazek

Z menu wybierz opcję Build → Select target → Release.

Tym razem tylko skompiluj program przez naciśnięcie Ctrl+F9 lub kliknięcie ikony obrazek.

Z katalogu bin\Debug przekopiuj plik SDL2.dll do katalogu bin\Release. Plik SDL2.dll jest biblioteką dynamiczną, z której korzystają programy SDL2. Plik ten musi być dostępny podczas uruchamiania programu. Najlepiej, jak będzie on w tym samym katalogu, co program (inna opcja to umieszczenie go w katalogu Windows lub Windows\System32, lecz nowe wersje Windows mogą blokować ci operację kopiowania do tych katalogów, pewnie w przyszłości za tą możliwość będziesz musiał płacić!).

Gdy umieścisz plik w katalogu bin/Release, to program można już normalnie uruchamiać. Pamiętaj, aby wraz z programem przekazywać swoim znajomym również plik SDL2.dll.

Aby na przyszłość nie powtarzać tych operacji, stworzymy teraz szablon projektu SDL2.

Najpierw dodamy do projektu pliki SDL2.dll z obu katalogów Debug i Release.

Z menu wybierz opcję ProjectAdd files...

W okienku dodawania pliku wejdź do katalogu bin/Debug, zaznacz plik SDL2.dll i kliknij w przycisk Otwórz.

W okienku wyboru konfiguracji, w której ma być dostępny ten plik zaznacz tylko Debug:

obrazek

Zatwierdź kliknięciem w OK.

Powtórz tę samą operację dla pliku SDL2.dll z katalogu bin/Release. Tym razem w oknie wyboru konfiguracji zaznacz tylko Release.

Na drzewie projektu w oknie Management pojawi się nowa gałąź. Po rozwinięciu powinieneś zobaczyć dodane pliki:

obrazek

Wróć do konfiguracji Debug: z menu wybierz Build → Select target → Debug

Zapisz projekt (Ctrl+S).

Z menu wybierz opcję: File → Save project as template...

Pojawi się okno, w którym masz podać nazwę szablonu:

obrazek

Jeśli wszystko poszło dobrze, to na koniec zobaczysz okienko:

obrazek

Szablony są zapisywane na twoim dysku w katalogu:

 

%appdata%\CodeBlocks\UserTemplates

 

Pozostaje teraz nauczyć się korzystania z szablonu sdl2.

Z menu wybierz opcję File → Close all projects. W tym momencie masz środowisko CodeBlocks w takim stanie, jak tuż po uruchomieniu.

Kliknij w Create a new project.

W kreatorze wybierz User templates (szablony użytkownika):

obrazek

Zobaczysz na liście swój szablon sdl2. Kliknij w niego, po czym kliknij w przycisk Go.

Tu jest troszkę inaczej, gdyż pojawi się okno, w którym masz wybrać miejsce do utworzenia projektu:

obrazek

Najpierw wybierz katalog na projekty. Ja taki katalog utworzyłem sobie na dysku D i nazwałem go cprj (projekty C/C++). Ty oczywiście możesz mieć inne preferencje, niemniej dobrze jest mieć wszystkie projekty w jednym miejscu, gdzie łatwo je znaleźć i skąd wygodnie jest je archiwizować (rób kopie np. na pendrive'ie, bo w razie awarii dysku/komputera zostaniesz z niczym).

Gdy wybierzesz katalog, kliknij w przycisk Utwórz nowy folder i nadaj nowemu katalogowi jakąś nazwę:

obrazek

Ja, po prostu, numeruję kolejne projekty: sdl001, sdl002... itd.

Gdy utworzysz katalog dla projektu i nazwiesz go sobie odpowiednio, zatwierdź okienko kliknięciem w OK.

Teraz pojawi się jeszcze jedno okno dialogowe, w którym masz możliwość zmiany nazwy pliku projektu. Nazwę tą otrzyma później program exe:

obrazek

Gdy to zrobisz, CodeBlocks utworzy dokładnie taki sam projekt jak ten, który posłużył do stworzenia szablonu. W panelu Management masz dwa katalogi: Sources z plikami źródłowymi oraz Others z plikami SDL2.dll dla konfiguracji Debug (uruchomieniowej) i Release (ostatecznej, wydawczej).

Z katalogu Sources załaduj do edytora plik main.cpp. Jest to nasz przykładowy program. Możesz go sobie skompilować i uruchomić. Wszystkie opcje kompilatora i linkera zostały zachowane z projektu szablonowego.

Podsumowując, aby dostosować środowisko CodeBlocks do współpracy z SDL2, należy:

  1. Pobrać z witryny projektu pliki nagłówkowe oraz biblioteki. Pliki nagłówkowe kopiujemy do katalogu include kompilatora MinGW (zostaną umieszczone w ...include\SDL2). Biblioteki należy skopiować do katalogu lib.
  2. Utworzyć projekt, wstępnie go skompilować, aby powstał katalog ...bin\Debug lub ...bin\Release. Skopiować do tego katalogu plik SDL2.dll, który znajdziesz w katalogu bin w pobranym ze strony projektu archiwum.
  3. W opcjach projektu ustawić dla linkera opcję dołączania bibliotek SDL: -lmingw32 -lSDL2main -lSDL2, opcjonalnie ustawić ścieżkę dostępu do ...include\SDL2 w katalogach poszukiwań. Alternatywnie dostęp do plików nagłówkowych SDL2 możesz uzyskać przez dyrektywę #include "SDL\SDL.h".

Po wykonaniu powyższych czynności środowisko CodeBlocks może kompilować i uruchamiać programy wykorzystujące SDL2. Aby ciągle tego nie powtarzać w swoich projektach, najlepiej stworzyć szablon, który będzie posiadał już wszystkie potrzebne ustawienia. Pokazałem krok po kroku, jak to należy zrobić.

Utworzony w ten sposób program wymaga dodatkowo pliku SDL2.dll. Plik ten może znajdować się w tym samym katalogu, co uruchamiany program. Można go również umieścić w katalogu Windows lub Windows/System32, o ile masz dostęp do operacji kopiowania (Windows 10 blokuje je dla katalogów systemowych). Jeśli będziesz się trzymał mojej metody, to bibliotekę dynamiczną SDL2.dll zawsze będziesz miał automatycznie wraz z programem wewnątrz katalogu projektowego w Debug lub w Release.

To wszystko, możesz rozpocząć naukę programowania w SDL2. Zapraszam.

 

Instalacja SDL 2 dla Ubuntu

Opis dotyczy instalacji biblioteki SDL 2 dla środowiska CodeBlocks z kompilatorem MinGW w systemie Linux Ubuntu.

Uruchom terminal (Ctrl+Alt+T).

Wpisz:

 

sudo apt-get install libsdl2-dev

 

Polecenie zainstaluje bibliotekę SDL2 wraz ze wszystkimi niezbędnymi składnikami do programowania. Teraz musimy jedynie skonfigurować odpowiednio środowisko CodeBlocks.

Uruchom CodeBlocks.

Kliknij w Create a new project.

W kreatorze zaznacz opcję Console application i kliknij w przycisk Go.

obrazek

Wybierz nazwę dla projektu (Project title) oraz miejsce do utworzenia dla niego katalogu (Folder to create project in), po czym kliknij w Next:

obrazek

Zaznacz obie konfiguracje Debug i Release, kliknij w Finish.

obrazek

Projekt zostanie utworzony. W panelu Management rozwiń gałąź Sources i załaduj do edytora plik main.cpp (trzeba go dwukrotnie kliknąć myszką):

obrazek

 

Gdy plik znajdzie się w edytorze, podmień go poniższym kodem programu:

 

// Test SDL2

#include <SDL2/SDL.h>
#include <iostream>

using namespace std;

//Rozmiar okienka
const int SCREEN_WIDTH = 320;
const int SCREEN_HEIGHT = 320;

int main(int argc, char* args[])
{

	// Okno robocze
	SDL_Window * window = NULL;

	// Powierzchnia graficzna okna
	SDL_Surface * screenSurface = NULL;

	// Inicjujemy SDL
	if(SDL_Init(SDL_INIT_VIDEO) < 0 )
	{
		cout << "SDL niezainicjowane! Błąd SDL: " << SDL_GetError() << endl;
	}
	else
	{
		// Tworzymy okno
		window = SDL_CreateWindow("Okienko SDL", SDL_WINDOWPOS_CENTERED,
                      SDL_WINDOWPOS_CENTERED, SCREEN_WIDTH, SCREEN_HEIGHT, SDL_WINDOW_SHOWN);
		if(!window)
		{
			cout << "Okno nieutworzone! Błąd SDL: " << SDL_GetError() << endl;
		}
		else
		{
			// Uzyskujemy dostęp do powierzchni graficznej okna
			screenSurface = SDL_GetWindowSurface(window);

			// Wypełniamy ją kolorem czerwonym
			SDL_FillRect(screenSurface, NULL, SDL_MapRGB(screenSurface->format, 0xFF, 0xFF, 0));

			// Uaktualniamy powierzchnię
			SDL_UpdateWindowSurface(window);

			// Czekamy 3 sekundy
			SDL_Delay(3000);
		}
	}

	// Usuwamy okno
	SDL_DestroyWindow(window);

	//Kończymy pracę z SDL
	SDL_Quit();

	return 0;
}

 

Jeszcze nic nie kompiluj. Musimy wprowadzić odpowiednie ustawienie linkera.

Z menu wybierz opcję Project → Build options.

obrazek

Wybierz zakładkę Linker settings. Upewnij się, że w lewym panelu nie jest wybrane ani Debug, ani Release (w ten sposób to, co wprowadzisz, będzie obowiązywało w obu konfiguracjach). W polu Other linker options wpisz:

-lSDL2

Zatwierdź kliknięciem w OK.

Środowisko jest skonfigurowane, wróć do edytora, skompiluj i uruchom program (klawisz F9). Jeśli pojawi się żółte okienko, to wszystko jest w porządku:

obrazek

 

Podsumowując, aby programować w Ubuntu (dla innych dystrybucji jest podobnie) z wykorzystaniem biblioteki SDL2, należy:

  1. Zainstalować pakiet libsdl2-dev.
  2. W CodeBlocks w opcjach linkera dodać wpis: -lSDL2.
  3. Dostęp do plików nagłówkowych SDL2 jest poprzez dyrektywę #include <SDL2/SDL.h>.

Problemem będzie, jeśli zechcesz podzielić się z kimś swoim programem. Programy korzystają dynamicznie z bibliotek SDL2, które pojawiają się w systemie po zainstalowaniu SDL2. Oczywiście zawsze możesz samodzielnie skompilować wszystkie biblioteki tak, aby były statyczne, wtedy program będzie je miał w swoim kodzie. Jednak tym się tutaj nie zajmuję i nie polecam tego rozwiązania. Alternatywą jest stworzenie pakietu instalacyjnego, który sprawdzi dostępność wymaganych bibliotek i w razie braku doinstaluje je. Tym też się nie będę zajmował. Wszystko jest opisane w sieci, a skoro pracujesz w Linuksie. to powinieneś takie rzeczy poznać. W ostateczności użytkownik zawsze może sobie zainstalować najnowszy pakiet libsdl2-dev i sprawa będzie załatwiona.

To wszystko (zaglądnij do sekcji Windows, gdzie opisano tworzenie szablonu projektu – w Ubuntu robi się to identycznie).

 

Zespół Przedmiotowy
Chemii-Fizyki-Informatyki

w I Liceum Ogólnokształcącym
im. Kazimierza Brodzińskiego
w Tarnowie
ul. Piłsudskiego 4
©2019 mgr Jerzy Wałaszek

Materiały tylko do użytku dydaktycznego. Ich kopiowanie i powielanie jest dozwolone
pod warunkiem podania źródła oraz niepobierania za to pieniędzy.

Pytania proszę przesyłać na adres email: i-lo@eduinf.waw.pl

Serwis wykorzystuje pliki cookies. Jeśli nie chcesz ich otrzymywać, zablokuj je w swojej przeglądarce.
Informacje dodatkowe.