Professional Documents
Culture Documents
PRZYKADOWY ROZDZIA
SPIS TRECI
KATALOG KSIEK
KATALOG ONLINE
ZAMW DRUKOWANY KATALOG
OpenGL. Leksykon
kieszonkowy
Autor: Andrzej Orowski
ISBN: 83-7361-968-2
Format: B6, stron: 160
TWJ KOSZYK
DODAJ DO KOSZYKA
CENNIK I INFORMACJE
ZAMW INFORMACJE
O NOWOCIACH
ZAMW CENNIK
CZYTELNIA
FRAGMENTY KSIEK ONLINE
Wydawnictwo Helion
ul. Chopina 6
44-100 Gliwice
tel. (32)230-98-63
e-mail: helion@helion.pl
Spis treci
Wstp ............................................................................................ 5
1. OpenGL dla Windows .................................................................. 7
Typy Object Pascal i OpenGL
Przygotowanie rodowiska pracy. Funkcje WGL
Aplikacja w oknie
Aplikacja penoekranowa
Komponent (VC) dla Delphi
7
10
13
19
19
23
59
63
64
67
72
74
78
81
83
84
5. Bryy ............................................................................................86
Cylinder
Dysk
Sfera
87
88
91
93
109
110
112
112
113
118
119
121
124
126
128
133
148
150
153
Spis treci
74
75
Uwaga
Nowa wielko rysowanych punktw bdzie taka sama
dla wszystkich punktw rysowanych po jej ustaleniu. Aby
przywrci domyln wielko punktu 1 (jeden), naley ponownie wywoa procedur glPointSize(), z parametrem
Grubo rwnym 1 (jeden).
glPointSize(5); // Punkt o wielkoci 5 jednostek
glPointSize(1); // Powrt do wielkoci domylnej
glVertex*()
Deklaracja: procedure glVertex2*(x, y, z, w : GL**[PGL**]);
lub procedure glVertex3*(x, y, z, w : GL**[PGL**]);
lub procedure glVertex4*(x, y, z, w : GL**[PGL**]);
Uwaga
Znak * (gwiazdka) to jedno z: d, f, i, s, dv, fv, iv lub sv.
Dwuznak ** (dwie gwiazdki) to odpowiednio: Double, Float,
Int lub Short.
76
wymuszaj stosowania innego typu liczb. W powyszym przykadzie uwzgldniono procedur glPointSize(), ktra okrela
wielko rysowanych punktw na ekranie. Jeeli nie wywoamy
tej procedury, to wszystkie punkty bd miay domyln wielko rwn 1 (jeden). Dla punktw, podobnie jak dla innych
obiektw, mona wykorzysta narzdzie do wygadzania krawdzi, czyli tzw. antialiasing. W razie zwikszenia rozmiarw
punktu okae si, e ma on ksztat kwadratu, co nie zawsze jest
podane. Aby tego unikn, wystarczy wywoa procedur
glEnable() z parametrem GL_POINT_SMOOTH, co spowoduje, e
naroniki zostan zaokrglone. Naley pamita o wywoaniu
procedury glDisable(GL_POINT_SMOOTH), jeeli kolejne punkty
maj by rysowane bez wygadzania. Wczanie wygadzania
dla punktw o domylnej wielkoci 1.0 jest bezcelowe i nie naley go stosowa. Poniej przedstawiono fragment kodu, ktrego
wykonanie powoduje narysowanie punktu bez wygadzania
i z wygadzaniem:
// Punkt
glColor3f(0.0, 0.0, 1.0); // Kolor niebieski
// Punkt bez wygadzania
glPointSize(95); // Wielko punktu(95 pikseli);
glBegin(GL_POINTS); // Rysowanie punktw
glVertex3f(0, 0, 0); // Pooenie punktu(rodek okna
grafiki OpenGL)
glEnd; // Koniec rysowania
// Punkt wygadzony
glEnable(GL_POINT_SMOOTH); // Wczenie wygadzania
(antialiasing) punktu
glPointSize(95);
glTranslatef(100, 0, 0);
glBegin(GL_POINTS);
glVertex3f(0, 0, 0);
glEnd;
glDisable(GL_POINT_SMOOTH); // Wyczenie wygadzania
punktu
77
Uwaga
Domylnie wygadzanie jest wyczone, a to ze wzgldu na
bardzo znaczce spowolnienie pracy programu. Przed wczeniem wygadzania naley przeanalizowa konieczno jego
uycia i wyczy, jeeli przestaje by faktycznie niezbdne.
78