Shkolla e mesme “Sezai Surroi” ,Bujanoc PUNIM MATURE Lënda:Programimi Tema :Aplikacionet Grafike -OpenGL Nxënësja : Alejna Sulejmani Profesori i Lëndës: Inxh.dip.BEKIM KASUMI Qeshor, 2012
Shkolla e mesme “Sezai Surroi” ,Bujanoc
PUNIM MATURE Lënda:Programimi
Tema :Aplikacionet Grafike -OpenGL
Nxënësja : Alejna Sulejmani Profesori i Lëndës: Inxh.dip.BEKIM KASUMI
Qeshor, 2012
Alejna Sulejmani
2 Aplikacionet grafike -OpenGL
Hyrje
OpenGL paraqet rrethinën primare për zhvillim e aplikacioneve grafike në 2D dh 3D (2D –
Dy dimenzionale dhe 3D- tre dimenzionale ). OpenGL rrjethë nga fjala angleze Open
Graphics Language. Hera parë është paraqitur në vitin 1992 dhe prej atëherë OpenGL
paraqet API (API është shkurtesa prej Application Programming Interface)grafikën më të
përdorur ,i cili ka dhënë në mijëra aplikacione për të gjitha llojet të platformave të
kompjuterëve. Bashkarishtë me OpenGL .duhet që të rregullohet që punohet edhe me GLUT-
ë( GLUT është shkurtesa prej Graphics Language Utility Toolkit) dhe eshtë kompatibil me
OpenGL-ën.
Në këtë punim do të sqarojmë se si të mundësojmë që OpenGL dhe GLUT të punojnë
mbrenda sistemit operativ Windows me ndihmën e gjuhës programuese Visual C++. Në këtë
punim përdoret gjuha Visual C++ 6.0 e cila gjendet mbrenda paketës programuese Microsoft
Visual Studio 6.0
Alejna Sulejmani
3 Aplikacionet grafike -OpenGL
Fajllat dhe hapat e nevojshme për punë me OpenGL dhe GLUT
Për të punuar me OpenGL dhe GLUT së pari duhet të shkarkojmë,nëse nuk i kemi, këta fajllat
nga interneti :
për OpenGL - opengl32.lib, glu32.lib, glaux.lib, gl.h, glaux.h, glu.h, glu32.dll dhe
opengl32.dll;
për GLUT - za GLUT: glut.dll, glut32.dll, glut.h, glut.lib dhe glut32.lib.
Pastaj këta fajlla duhet të vendosen ne lokacionin e saktë. Të gjitha bibliotekat me ekstensionin .lib (opengl32.lib,glu32.lib, glaux.lib, glut.lib dhe glut32.lib) duhet të vendosen në këto lokacione vijuese: <driver>:\<VC++ lokacioni>\lib\opengl32.lib <driver>:\<VC++ lokacioni>\lib\glu32.lib <driver>:\<VC++ lokacioni>\lib\glaux.lib <driver>:\<VC++ lokacioni>\lib\glut.lib <driver>:\<VC++ lokacioni>\lib\glut32.lib ku <driver> : paraqet partipacionin e hard diskut në të cilin është instaluar paketa programuese Visual C++,kurse <VC++ lokacioni> paraqet lokacionin e direktoriumit ku është instaluar paketa programuese Visual C++. Bibliotekat me ekstenzion .h (gl.h, glaux.h, glu.h dhe glut.h) duhet vendosen në lokacionin vijues: <driver>:\<VC++ lokacioni>\include\GL\gl.h <driver>:\<VC++ lokacioni>\include\GL\glaux.h <driver>:\<VC++ lokacioni>\include\GL\glu.h <driver>:\<VC++ lokacioni>\include\GL\glut.h
ku <driver> : paraqet partipacionin e hard diskut në të cilin është instaluar paketa programuese Visual C++,kurse <VC++ lokacioni> paraqet lokacionin e direktoriumit ku është instaluar paketa programuese Visual C++. Bibliotekat me ektenzion .dll glu32.dll, opengl32.dll, glut.dll dhe glut32.dll) duhet vendosen në direktoriumiet e sistemit mbrenda direktoriumeve në të cilin gjendet sistemi operativ . Kur është fjala për sistemin operativ Windows atëherë lokacioni është: C:\Winnt\System32\glu32.dll C:\Winnt\System32\opengl32.dll C:\Winnt\System32\glu32.dll C:\Winnt\System32\glut32.dll
Alejna Sulejmani
4 Aplikacionet grafike -OpenGL
Ndërtimi i projektit Për ndërtimit të projektit për punë me aplikacionet grafike me ndihmën e OpenGL dhe GLUT kalojmë në këto hapa:
1. Startojmë Visual Studio C++ 2. Pastaj në hapin e dytë aktivizojmë File > New dhe do të paraqitet dialogu si në fifurën 1.1
Fig.1.1. Dialogu New
3. Në hapin e tretë klikojmë në Project dhe zgjedhim Win32 Console Applications 4. Në fushën Project name duhet të shënohet emri i projektit. Ne rastin tonë le të jetë Grafika.
Pas klikimit në tastin OK ,kalojmë më tej dhe si reultat paraqitet dialogu si në figurën 2.
Fig. 2. Step 1 of 1
5. Në dialogun me emrin Win32 Console Application – Step 1 of 1 duhet të zgjedhet An empty project
Pastaj klikojmë në tastin Finish. Si rezultat paraqitet dialogu si në figurën 3.
Alejna Sulejmani
5 Aplikacionet grafike -OpenGL
Fig.3.Dialogu New Project Information
6. Me klikimin në tastin OK përfundon puna me ndertimin e tipit të projektit. Pamja e hasirës punuese të Visual C++ është treguar në figurën 4.
Fig. 4 . Visual C++
7. Hapi tjetër i cili duhet të kryhet është aktivizimi i menysë rënëse Project dhe aktivizimi i opsionit Settings .Mbrenda dialogut Project Settings klikojmë tab-in Link ,si në figurën 5.
Fig . 5 Project Settings
Alejna Sulejmani
6 Aplikacionet grafike -OpenGL
8. Në hapin e fundit duhet që të rregullohen Object/library modulet. Mbrenda këtij moduli duhet të vendosen katër biblioteka : opengl32.lib,glu32.lib, glaux.lib i glut.lib (figura 6).
Fig. 6 Vendosja e biblitekave të OpenGl dhe Glut.
Alejna Sulejmani
7 Aplikacionet grafike -OpenGL
Komandat themelore mbrenda OpenGl dhe Glut
Në fillim të çdo programi pët pune me grafikë duhet të insertohet fajllat e ballinës të cilët përbajnë në vete të gjitha informacionet e nevojshme për funksionet të cilët përdoren në program .Njëra prej tyre është ë: #include <GL/glut.h>
Komanda e cila definon ngjyrat është:
glColor3f (R, G, B) ku vlerat e komponenteve sillen rreth kufirit prej 0.0 dri 1.0: R prej 0.0 deri 1.0, G prej 0.0 deri 1.0
dhe B prej 0.0 deri 1.0 . Në vazhdim janë paraqitur ngjyrat bazë të cilat përdoren në OpneGL.
glColor3f (0.0, 0.0, 0.0) – Ngjyra e Zezë (black)
glColor3f (1.0, 0.0, 0.0) – E Kuqe (red)
glColor3f (0.0, 1.0, 0.0) – E Gjelbërt (green)
glColor3f (1.0, 1.0, 0.0) – E Verdh (yellow)
glColor3f (0.0, 0.0, 1.0) – E Kaltër (blue)
glColor3f (1.0, 0.0, 1.0) – Vjollc (magenta)
glColor3f (0.0, 1.0, 1.0) – E Kaltër e çelët (cyan)
glColor3f (1.0, 1.0, 1.0) – E Bardh (white)
Gjatë punës me aplikacione grafike ,shpesh nevoitet vizatimi i figura gjeometrike siç janë përshembull : trekëndëshi ,katërkëndëshi ,kubi ,katrori ,sfera etj. Për kët qëllim në luader të OpenGl dhe Glut ekzistojnë komandat për paraqitjen e këtyre figurve gjeometrike .Disa prej tyre do ti përmendemi në vazdim.
Paraqija e pikave Në OpenGL komanda për paraqitjen e pikave është: GL_POINTS
Pikat janë të prezantuara me kordinata të kompletuara të cilat formojnë TEME apo VARTEKS . Ato mundë të paraqiten si pika dydimezionale (vetëm me X dhe Y kordinata) apo si pika tredimezionale (X,Y dhe Z). Sintaksta për paraqitjen e pikës 2D( pika në rrafshë) është: glBegin(GL_POINTS); glVertex2f (x, y); glEnd();
Sintaksa për paraqitjen e pikave 3D( pika në hapsirë) është: glBegin(GL_POINTS); glVertex2f (x, y); glEnd();
Alejna Sulejmani
8 Aplikacionet grafike -OpenGL
Vizatimi i vizave Në OpenGl fjala LINE paraqet SEGMENTIN LINJORË ,e cila nuk definon si në matematikë linjën të cilë nuk i dihet pika fillestare dhe përfundimtare . Kjo është më së miri de definohet si segmente linjorë të lidhur në seri. Në këtë rast segmenti linjorë është i definuar me kordinata të pikave përfundimater . Për paraqitjen e segmenteve linjorë në OpenGL përdoren këto komanda: • GL_LINES • GL_LINE_STRIP
• GL_LINE_LOOP Përvëç këtyre komandave për vizatimin e vijave përdoret edhe komanda për rregullim e trashësisë së vet vijës : glLineWidth (2.0)
Vlera në kllapa është vlera në piksella .Nëse vlera është 1(1.0) atëherë vizatohet vija me trashësinë 1 piksell,nëse vlera në kllapa është 2 (2.0) atëherë do të të vizatohet vija me trashësinë 2 piksella.
Vizatimi i trekëndëshit Në OpenGL fjala TRIANGLE paraqet trekëndëshin dhe definohen me ndihmën e kordinatave të pikave . Për paraqitjen e trekëndëshit në OpenGl ekzistojnë tri komada themelore:
• GL_TRIANGLES
• GL_TRIANGLE_STRIP • GL_TRIANGLE_FAN
Mënyra e përdorimit të këtyra komandave janë paraqitur në figurë 7. Fig. 7
Alejna Sulejmani
9 Aplikacionet grafike -OpenGL
Vizatimi i katërkëndëshit Në OpenGL fjala QUAD paraqet katërkëndëshin dhe definohen me ndihmën e kordinatave të pikave . Për paraqitjen e trekëndëshit në OpenGl ekzistojnë tri komada themelore:
• GL_QUADS
• GL_QUAD_STRIP
Mënyra e përdorimit të këtyra komandave janë paraqitur në figurë 8. Fig.8
Alejna Sulejmani
10 Aplikacionet grafike -OpenGL
Shembull- Programi për vizatimin e katër trekëndësha me ngjyra të ndryshme Në këtë shembull do të demostrojmë aplikacionin grafik duke përdorur OpenGl dhe Glut në Visual C++. Programi ekzekutues do të diket si në figurën 9. Fig.9 .Vizatimi ynë //Vizatimi i trekëndeshëve me komandën TRIANGLES
//Bekim Kasumi , 17.04.2012 #include "windows.h" #include <GL/glut.h> void display(void) { /* fshinë të gjitha piksellat prej buffer-it */ glClear (GL_COLOR_BUFFER_BIT); /* Vizahohen trekëshdëshët */ glLineWidth (2.0); glBegin(GL_TRIANGLES); /* Vizatohet trekëdëshi i kuq */ glColor3f (1.0, 0.0, 0.0); glVertex2f (2.0, 2.0); glVertex2f (20.0, 2.0); glVertex2f (14.0, 14.0); /* Vizatohet trekëdëshi i gjelbërt*/ glColor3f (0.0, 1.0, 0.0); glVertex2f (2.0, 4.0); glVertex2f (14.0, 16.0); glVertex2f (2.0, 20.0); /* Vizatohet trekëdëshi i verdhë */ glColor3f (1.0, 1.0, 0.0); glVertex2f (20.0, 20.0); glVertex2f (20.0, 4.0); glVertex2f (15.0, 16.0); /* Vizatohet trekëdëshi i klatër i çelët */ glColor3f (0.0, 1.0, 1.0); glVertex2f (6.0, 20.0); glVertex2f (18.0, 20.0);
Alejna Sulejmani
11 Aplikacionet grafike -OpenGL
glVertex2f (14.5, 17.0); glEnd(); /* Ekzekutohet GL komanda në kohën përfundimtare*/ glFlush (); } void init (void) { /* Definohet RGB dhe Alpha vlerat kur buffer-i është "pastruar" prej ngjyrave. * Zakonisht katër vlerat e saj janë 0.0. glClearColor (0.2, 0.2, 0.2, 0.0); /* Definohet vlera e shikimit*/ glMatrixMode(GL_PROJECTION); glLoadIdentity(); glOrtho(0.0, 22.0, 0.0, 22.0, -1.0, 1.0); } /* * Deklarohet madhësia e dritares, dhe Display mod * (single buffer dhe RGBA). Hapet dritarja me tekstin * "KATERKENDESHI - T R I A N G L E S" në titullin e dritares. * Thirren inicialet. Regjistrohet funksioni Callback për paraqitjen grafike. * Starton Programi dhe prosesi. */ int main(int argc, char** argv) { glutInit(&argc, argv); glutInitDisplayMode (GLUT_SINGLE | GLUT_RGB); glutInitWindowSize (440, 440); glutInitWindowPosition (400, 200); glutCreateWindow ("KATËRKENDËSHET - T R I A N G L E S"); init (); glutDisplayFunc(display); glutMainLoop(); return 0; /* ANSI C kërkon përgjigje kur klikojmë ndonjë tast. */ }