Grafika Komputerowa 2D

Transkrypt

Grafika Komputerowa 2D
Laboratorium nr 1
Instrukcja
laboratoryjna
1
1)
1/3
Grafika Komputerowa 2D
Temat: Wprowadzenia do biblioteki graficznej Allegro
Przygotował: dr inż. Grzegorz Łukawski, mgr inż. Maciej Lasota
Wprowadzenie do biblioteki graficznej Allegro
Allegro http://alleg.sourceforge.net/ jest darmową biblioteką rozpowszechnianą na
zasadach licencji Gift-Ware z pełnym darmowym kodem źródłowym. Biblioteka ta została
napisana w całości w języku C (z dodatkowymi wstawkami Asemblera) w 1996 roku przez
Shawn Hargreaves i wykorzystywana jest głównie do tworzenia animacji oraz gier. Biblioteka
Allegro jest w pełni przenośna, wspiera większość obecnie dostępnych platform
systemowych DOS/Windows/UNIX/Linux/MacOS/QNX/BeOS.
Allegro posiada szereg funkcji służących do obsługi grafiki, dźwięku, urządzeń
peryferyjnych, czasu. Zapewnia stało i zmiennoprzecinkowe operacje matematyczne, funkcje
2D/3D operacje na plikach oraz funkcje tworzenia GUI. Istnieje dodatkowa biblioteka
AllegroGL implementująca OpenGL do wykorzystania z biblioteką Allegro.
1.1)
Organizacja ekranu
X
(0,0)
Obszar widoczny
Y
Obszar niewidoczny (wirtualny), w
pamięci karty graficznej
W
trybie
graficznym
biblioteki
Allegro
programista
ma
możliwość
kontroli
pojedynczych pikseli ekranu (tzw. Bitmap’y). Niezależnie od wybranego trybu, współrzędne
pikseli wskazywane są za pomocą współrzędnych X (w poziomie) i Y (w pionie). Początek
układu współrzędnego znajduje się w lewym górnym rogu.
Laboratorium nr 1
1.2)
2/3
Inicjalizacja biblioteki oraz wybór trybu graficznego
W celu inicjalizacji biblioteki Allegro, na początku programu wywołujemy funkcję:
allegro_init();
Tryb graficzny inicjujemy za pomocą funkcji:
set_gfx_mode(int driver, int w, int h, int v_w, int v_h);
Pierwszy parametr określa sposób inicjowania trybu graficznego, kolejne dwa
parametry określają wysokość oraz szerokość obszaru widocznego na ekranie monitora.
Ostatnie dwa parametry określają minimalne rozmiary obszaru wirtualnego w pamięci karty
graficznej standardowo ustawiamy na 0.
Driver
GFX_AUTODETECT
biblioteka Allegro sama wykrywa i ustawia tryb graficzny,
GFX_AUTODETECT_FULLSCREEN
tryb pełnoekranowy,
GFX_AUTODETECT_WINDOWED
tryb okienkowy,
GFX_SAFE
tryb bezpieczny,
GFX_TEXT
tryb tekstowy (80 x 25).
W
Szerokość obszaru widocznego
H
Wysokość obszaru widocznego
V_W
Minimalna szerokość obszaru wirtualnego
V_H
Minimalna wysokość obszaru wirtualnego
Przed zakończeniem programu należy zakończyć zainicjalizowaną bibliotekę Allegro,
poprzez wywołanie funkcji:
allegro_exit();
Przykład 1:
int main()
{
allegro_init();
if (set_gfx_mode(GFX_AUTODETECT, 320, 200, 0, 0) != 0)
{
allegro_message("Problem z ustawieniem trybu graficznego\n");
}
// kod programu
allegro_exit();
return 0;
}
END_OF_MAIN();
Laboratorium nr 1
1.3)
3/3
Organizacja obszaru widocznego
Obszar widoczny w bibliotece Allegro opisywany jest za pomocą struktury BITMAP.
Dwie najważniejsze składowe tej struktury to ‘w’ maksymalna szerokość (X) oraz ‘h’
maksymalna wysokość (Y). Wywołanie funkcji set_gfx_mode() tworzy automatycznie w
pamięci karty graficznej obszar wirtualny oraz obszar widoczny, w zależności od parametrów
jak zostały podane podczas wywołania funkcji. Automatycznie tworzona jest też zmienna
‘screen’ będąca wskaźnikiem na strukturę BITMAP.
1.4)
Najważniejsze funkcje rysujące
Nazwa funkcji
putpixel
getpixel
makecol
clear_bitmap
circle
circlefill
rect
rectfill
triangle
floodfill
line
Parametry
Opis
Funkcja ustawia piksel o
void putpixel(BITMAP *bmp, int x, int y, int color) danym kolorze we wskazanym
punkcie bitmapy
Funkcja pobiera kolor
int getpixel(BITMAP *bmp, int x, int y;
wskazanego piksela bitmapy
Funkcja ustawia i zwraca
int makecol(int r, int g, int b)
kolor, podany w postaci RGB
(0 -255)
Funkcja czyści obszar
void clear_bitmap(BITMAP *bitmap)
widoczny i ustawia kolor
obszaru RGB(0,0,0)
Funkcja rysująca okrąg we
void circle(BITMAP *bmp, int x, int y, int radius, int
wskazanym punkcie,
color)
promieniu i kolorze
void circlefill(BITMAP *bmp, int x, int y, int radius,
Funkcja rysująca wypełniony
int color)
okrąg
Funkcja rysująca prostokąt o
void rect(BITMAP *bmp, int x1, int y1, int x2, int y2, lewym górnym rogu w punkcie
int color)
(x1,y1) i prawym dolnym rogu
(x2,y2)
void rectfill(BITMAP *bmp, int x1, int y1, int x2, int
Funkcja rysująca wypełniony
y2, int color)
prostokąt
Funkcja rysująca trójkąt
void triangle(BITMAP *bmp, int x1, y1, x2, y2, x3,
między trzema podanymi
y3, int color)
punktami
Funkcja wypełniająca
zamknięty obszar danym
void floodfill(BITMAP *bmp, int x, int y, int color)
kolorem, wewnątrz którego
znajduje się punkt (x,y)
Funkcja rysująca linię miedzy
void line(BITMAP *bmp, int x1, int y1, int x2, int y2,
dwoma podanymi punktami, o
int color)
danym kolorze

Podobne dokumenty