��Laboratorium nr 1 1/3
Grafika Komputerowa 2D
Instrukcja
laboratoryjna Temat: Wprowadzenia do biblioteki graficznej Allegro
PrzygotowaB: dr in|. Grzegorz Aukawski, mgr in|. Maciej Lasota
1
1) Wprowadzenie do biblioteki graficznej Allegro
Allegro http://alleg.sourceforge.net/ jest darmow bibliotek rozpowszechnian na
zasadach licencji Gift-Ware z peBnym darmowym kodem zr�dBowym. Biblioteka ta zostaBa
napisana w caBo[ci w jzyku C (z dodatkowymi wstawkami Asemblera) w 1996 roku przez
Shawn Hargreaves i wykorzystywana jest gB�wnie do tworzenia animacji oraz gier. Biblioteka
Allegro jest w peBni przeno[na, wspiera wikszo[ obecnie dostpnych platform
systemowych DOS/Windows/UNIX/Linux/MacOS/QNX/BeOS.
Allegro posiada szereg funkcji sBu|cych do obsBugi grafiki, dzwiku, urzdzeD
peryferyjnych, czasu. Zapewnia staBo i zmiennoprzecinkowe operacje matematyczne, funkcje
2D/3D operacje na plikach oraz funkcje tworzenia GUI. Istnieje dodatkowa biblioteka
AllegroGL implementujca OpenGL do wykorzystania z bibliotek Allegro.
1.1) Organizacja ekranu
X
(0,0)
Obszar widoczny
Y
Obszar niewidoczny (wirtualny), w
pamici karty graficznej
W trybie graficznym biblioteki Allegro programista ma mo|liwo[ kontroli
pojedynczych pikseli ekranu (tzw. Bitmap y). Niezale|nie od wybranego trybu, wsp�Brzdne
pikseli wskazywane s za pomoc wsp�Brzdnych X (w poziomie) i Y (w pionie). Pocztek
ukBadu wsp�Brzdnego znajduje si w lewym g�rnym rogu.
Laboratorium nr 1 2/3
1.2) Inicjalizacja biblioteki oraz wyb�r trybu graficznego
W celu inicjalizacji biblioteki Allegro, na pocztku programu wywoBujemy 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 pamici karty
graficznej standardowo ustawiamy na 0.
GFX_AUTODETECT
biblioteka Allegro sama wykrywa i ustawia tryb graficzny,
GFX_AUTODETECT_FULLSCREEN
tryb peBnoekranowy,
GFX_AUTODETECT_WINDOWED
Driver
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 zakoDczeniem programu nale|y zakoDczy zainicjalizowan bibliotek Allegro,
poprzez wywoBanie funkcji:
allegro_exit();
PrzykBad 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 3/3
1.3) Organizacja obszaru widocznego
Obszar widoczny w bibliotece Allegro opisywany jest za pomoc struktury BITMAP.
Dwie najwa|niejsze skBadowe tej struktury to w maksymalna szeroko[ (X) oraz h
maksymalna wysoko[ (Y). WywoBanie funkcji set_gfx_mode() tworzy automatycznie w
pamici karty graficznej obszar wirtualny oraz obszar widoczny, w zale|no[ci od parametr�w
jak zostaBy podane podczas wywoBania funkcji. Automatycznie tworzona jest te| zmienna
screen bdca wskaznikiem na struktur BITMAP.
1.4) Najwa|niejsze funkcje rysujce
Nazwa funkcji Parametry Opis
Funkcja ustawia piksel o
putpixel void putpixel(BITMAP *bmp, int x, int y, int color) danym kolorze we wskazanym
punkcie bitmapy
Funkcja pobiera kolor
getpixel int getpixel(BITMAP *bmp, int x, int y;
wskazanego piksela bitmapy
Funkcja ustawia i zwraca
makecol int makecol(int r, int g, int b) kolor, podany w postaci RGB
(0 -255)
Funkcja czy[ci obszar
clear_bitmap void clear_bitmap(BITMAP *bitmap) widoczny i ustawia kolor
obszaru RGB(0,0,0)
Funkcja rysujca okrg we
void circle(BITMAP *bmp, int x, int y, int radius, int
circle wskazanym punkcie,
color)
promieniu i kolorze
void circlefill(BITMAP *bmp, int x, int y, int radius, Funkcja rysujca wypeBniony
circlefill
int color) okrg
Funkcja rysujca prostokt o
void rect(BITMAP *bmp, int x1, int y1, int x2, int y2, lewym g�rnym rogu w punkcie
rect
int color) (x1,y1) i prawym dolnym rogu
(x2,y2)
void rectfill(BITMAP *bmp, int x1, int y1, int x2, int Funkcja rysujca wypeBniony
rectfill
y2, int color) prostokt
Funkcja rysujca tr�jkt
void triangle(BITMAP *bmp, int x1, y1, x2, y2, x3,
triangle midzy trzema podanymi
y3, int color)
punktami
Funkcja wypeBniajca
zamknity obszar danym
floodfill void floodfill(BITMAP *bmp, int x, int y, int color)
kolorem, wewntrz kt�rego
znajduje si punkt (x,y)
Funkcja rysujca lini miedzy
void line(BITMAP *bmp, int x1, int y1, int x2, int y2,
line dwoma podanymi punktami, o
int color)
danym kolorze
Wyszukiwarka
Podobne podstrony:
Laboratorium grafika2D 4Laboratorium grafika3D 4Laboratorium grafika2D 7Laboratorium grafika3D 7Laboratorium grafika2D 3Laboratorium grafika3D 3Laboratorium grafika3D 5Laboratorium grafika3D 6Laboratorium grafika3D 2Laboratorium grafika2D 2Laboratorium grafika2D 6Laboratorium grafika3D 1Rola laboratoriów w świetle wymagań systemów zarządzania jakosciąLaboratorium 3Arch grafika osnovi kompozicii grigoryanwięcej podobnych podstron