Wyklad 2008

background image

Grafika komputerowa

background image

Czym jest OpenGL ?

OpenGL(Open Graphics Library) jest biblioteką graficzną
służącą do generowania w czasie rzeczywistym grafiki
trójwymiarowej.
W skład biblioteki wchodzi kilkaset funkcji udostępniających
możliwość

wykorzystania

sprzętu

do

generowania

trójwymiarowych obrazów.

background image

Materiały o OpenGL

http://nehe.gamedev.net/

Andrzej

Orłowski

background image

OpenGL działa w architekturze klient – serwer.

Klientem jest aplikacja wykorzystująca OpenGL, która zleca
operacje graficzne do wykonania, a serwerem aktualnie używana
implementacja OpenGL (np. w sterowniku karty graficznej).

Opis działania

Budowa sceny odbywa się przez zapisywanie kolejnych kroków
koniecznych do jej odtworzenia. Każdy krok to wywołanie
odpowiedniej funkcji biblioteki.

background image

GLU (GL Utility library) : umożliwia łatwe tworzenie często używanych
brył – kula, stożek, widoków perspektywicznych, kamery

Biblioteki pomocnicze

GLUT (GL Utility Toolkit) : umożliwia tworzenie i zarządzanie
oknami, monitorowanie myszy i klawiatury, rysowanie
podstawowych brył geometrycznych

background image

Tworzenie pierwotnych obiektów graficznych (tzw. prymitywów)
na scenie graficznej odbywa się w standardzie OpenGL za
pomocą poleceń o ujednoliconej strukturze. Rodzaj tworzonego
obiektu określa się za pomocą parametrów wywołania funkcji
glBegin(). Wraz ze swoim odpowiednikiem, glEnd(), tworzy ona
swoiste „nawiasy” obejmujące całość procedury rysowania
obiektu.

Struktura polecenia OpenGL:

Większość poleceń OpenGL jest ponadto niezależna od rodzaju
obiektu docelowego, co oznacza, że efekt ich użycia względem
dowolnego obiektu będzie zawsze taki sam.

Przykład: glColor3f(0.5, 0.5, 0.5)

background image

Etapy tworzenia grafiki

Inicjalizacja podsystemu OpenGL

Przygotowanie środowiska do utworzenia obiektów

Zdefiniowanie procesów transformacji obiektów

pierwotnych

Generowanie obiektów pierwotnych

Wymiana powierzchni - tylko dla operacji

wykorzystujących podwójne buforowanie

background image

przygotowania środowiska operacyjnego do wywołań funkcji OpenGL

Inicjalizacja podsystemu
OpenGL

procedure setupPixelFormat(DC:HDC);

const

pfd:TPIXELFORMATDESCRIPTOR = (

);

var pixelFormat:integer;

begin

pixelFormat := ChoosePixelFormat(DC, @pfd);

if (pixelFormat = 0) then begin

exit;

end;

if (SetPixelFormat(DC, pixelFormat, @pfd) <> TRUE)
then begin

exit;

end;

end;

background image

określenie widoków

Inicjalizacja podsystemu
OpenGL

glViewport(x, y, w, h :
integer);

x i y- definiuje położenie lewego
dolnego

wierzchołka okna widoku

w - definiuje szerokość okna

h - definiuje wysokość okna

background image

rzutowanie

Inicjalizacja podsystemu
OpenGL

glOrtho(left, right, bottom, top, near,
far : GLfloat);

left - określa współrzędne x lewej płaszczyzny
obcinania

right - określa współrzędne x prawej płaszczyzny
obcinania,

bottom - określa współrzędne y dolnej płaszczyzny
obcinania,

top - określa współrzędne y górnej płaszczyzny
obcinania,

near - określa współrzędne przedniej płaszczyzny
obcinania,

far - określa współrzędne tylnej płaszczyzny
obcinania,

background image

rzutowanie

Inicjalizacja podsystemu
OpenGL

gluPerspective (fov, aspect, near, far :
GLfloat);

fov - określa kąt widzenia, czyli rozwartość ostrosłupa
ograniczającego widoczny wycinek sceny,
aspect - wyznacza proporcję szerokości przekroju
ostrosłupa do jego wysokości,
near - określa współrzędne z przedniej płaszczyzny
obcinania,
far - określa współrzędne z tylnej płaszczyzny obcinania,

background image

Inicjalizacja podsystemu
OpenGL

procedure GLInit;

begin

glViewport(0,0,400,400);


glMatrixMode(GL_PROJECTION);

glLoadIdentity;

glOrtho(-200,200,-200,200,-
200,200);


glMatrixMode(GL_MODELVIEW);

glLoadIdentity;

end;

procedure TForm1.FormCreate(Sender:
TObject);

var

DC:HDC;

RC:HGLRC;

i:integer;

begin

DC:=GetDC(Panel1.Handle);

SetupPixelFormat(DC);

RC:=wglCreateContext(DC);

wglMakeCurrent(DC, RC);

GLInit;

end;

background image

światło

Przygotowanie
środowiska ...

background image

Przygotowanie środowiska ...

glLight*(Numer_Lampy, Właściwość : enum, Wsk_Kolorów :
GLfloat);

Wartości parametru Właściwość:

GL_AMBIENT – światło rozproszone

GL_POSITION – pozycja źródła światła

GL_SPECULAR – światło odbite

W celu utworzenia efektu światła
należy:

 wywołać procedurę glEnable(GL_LIGHTING)

 włączyć jedną z kilku lamp przy pomocy procedury
glEnable(GL_LIGHT0). Parametrem procedury może być jedna z
wartości GL_LIGHT0 do GL_LIGHT7

 wywołać procedury odpowiedzialne za poszczególne typy
oświetlenia

światło

background image

Przygotowanie
środowiska ...

 
var
amb : TGLArrayf4 = (0.2,0.3,0.0,0.0);
pos : TGLArrayf4 = (-100,100,0.0,0.0);

procedure TForm1.FormCreate(Sender: TObject);
var
DC:HDC;
RC:HGLRC;
i:integer;
begin
DC:=GetDC(Panel1.Handle);
SetupPixelFormat(DC);
RC:=wglCreateContext(DC);
wglMakeCurrent(DC, RC);
GLInit;

glEnable(GL_LIGHTING);
glEnable(GL_LIGHT0);
glLightfv(GL_LIGHT0,GL_Ambient, @amb);
glLightfv(GL_LIGHT0,GL_Position, @pos);
end;

światło

background image

materiał

Przygotowanie środowiska ...

GlMaterialfv(Strona, Właściwość : Glenum, Wskaźnik_Kolorów
: PGLInt);

GlMaterialf(Strona, Właściwość : Glenum, Wskaźnik_Kolorów :
GLFloat); Wartości parametru Właściwość:

GL_AMBIENT – kolor w świetle
otoczenia

GL_DIFFUSE – kolor w świetle
rozproszonym

GL_SHININESS – współczynnik odbicia

Wartości parametru
Strona:
GL_FRONT
GL_BACK
GL_FRONT_AND_BACK

Var
mat_ambient : array [0..3] of GLfloat = ( 1.0,
1.0, 1.0, 1.0 );
...
glMaterialfv(GL_FRONT, GL_AMBIENT,
@mat_ambient);

background image

Transformacje ...

Przesunięcie:

glTranslatef (x, y, z : gldouble);

x, y z określają współrzędne wektora
przesunięcia

Obrót:

Skalowanie:

glRotatef(kąt, x, y, z : glfloat);
x, y, z określają współrzędne wektora osi

glScalef(x, y, z : glfloat);

x, y z określają wartości powiększenia wzdłuż
poszczególnych osi

background image

Generowanie obiektów

Zestaw instrukcji rysujących
prostokąt:

glBegin( GL_QUADS);

glVertex3f( -30, 0, 0.0);

glVertex3f( 0, -30, 0.0);

glVertex3f( 30, 0, 0.0);

glVertex3f( 0, 30, 0.0);

glEnd();

background image

Generowanie obiektów

background image

Generowanie obiektów

background image

Generowanie obiektów

background image

Generowanie obiektów

background image

Wymiana powierzchni

Ostatni etap składa się tylko z jednej funkcji SwapBuffers() i dotyczy
tylko operacji wykorzystujących podwójne buforowanie.

background image

Przykłady programów ...


Document Outline


Wyszukiwarka

Podobne podstrony:
Dietetyka - wykłady 2008, DIETETYKA Weterynaryjna
WYKŁAD (2008) - Hormony kory nadnerczy, materiały ŚUM, IV rok, Farmakologia, IV rok, 8 - Hormony (Th
PLC wyklad 2008 02
WSFiZ syllabus ZZL wykłady 2008 - 2009, Wiedza, ZZL
PlanWykladow, Budownictwo, VI sem MiBP, od natali VI sem, TRM, Materialy, Wyklady2008, STUDIA INZYNI
wyklad5 2008
wyklad15 2008
Prawo karne wykłady 2008 2009
Zaliczenie z biofizyki- wykłady 2008, far, biofizyka, egzamin, materiały na ćwiczenia
ekonomiczne uwarunkowania uzytkowania lasu, Ekonomika lenictwa - Tuchola i Poznan2008 (97) pelna2, E
WYKŁAD (2008) - NLPZ (wykład 3), Lekarski WLK SUM, lekarski, Farmakologia, Z chomika, Farmakologia,
WYKŁAD (2008) - Farmakokinetyka (wykład 1), Lekarski WLK SUM, lekarski, Farmakologia, Z chomika, Far
Enzymy WYKŁAD 2008, Lekarski WLK SUM, lekarski, biochemia, enzymy
Wyklad4 2008
Wyklad3 2008
Hydrologia wykład 2008, hydrologia
POSTĘPOWANIE SĄDOWO ADMINISTRACYJNE - kompletne wykłady 2008-2009, pliki zamawiane, edukacja
Analiza calosc wykładów 2008 rok, Materiały Ula, analiza
PLAN WYKŁADÓW - 2008, Psychologia kliniczna

więcej podobnych podstron