Top Banner
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
11

Lënda:Programimi të maturës/Aplikacionet grafike.pdf · Lënda:Programimi Tema :Aplikacionet Grafike -OpenGL ... Ne rastin tonë le të jetë Grafika. ... Në këtë shembull do

Feb 05, 2020

Download

Documents

dariahiddleston
Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Page 1: Lënda:Programimi të maturës/Aplikacionet grafike.pdf · Lënda:Programimi Tema :Aplikacionet Grafike -OpenGL ... Ne rastin tonë le të jetë Grafika. ... Në këtë shembull do

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

Page 2: Lënda:Programimi të maturës/Aplikacionet grafike.pdf · Lënda:Programimi Tema :Aplikacionet Grafike -OpenGL ... Ne rastin tonë le të jetë Grafika. ... Në këtë shembull do

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

Page 3: Lënda:Programimi të maturës/Aplikacionet grafike.pdf · Lënda:Programimi Tema :Aplikacionet Grafike -OpenGL ... Ne rastin tonë le të jetë Grafika. ... Në këtë shembull do

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

Page 4: Lënda:Programimi të maturës/Aplikacionet grafike.pdf · Lënda:Programimi Tema :Aplikacionet Grafike -OpenGL ... Ne rastin tonë le të jetë Grafika. ... Në këtë shembull do

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.

Page 5: Lënda:Programimi të maturës/Aplikacionet grafike.pdf · Lënda:Programimi Tema :Aplikacionet Grafike -OpenGL ... Ne rastin tonë le të jetë Grafika. ... Në këtë shembull do

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

Page 6: Lënda:Programimi të maturës/Aplikacionet grafike.pdf · Lënda:Programimi Tema :Aplikacionet Grafike -OpenGL ... Ne rastin tonë le të jetë Grafika. ... Në këtë shembull do

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.

Page 7: Lënda:Programimi të maturës/Aplikacionet grafike.pdf · Lënda:Programimi Tema :Aplikacionet Grafike -OpenGL ... Ne rastin tonë le të jetë Grafika. ... Në këtë shembull do

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();

Page 8: Lënda:Programimi të maturës/Aplikacionet grafike.pdf · Lënda:Programimi Tema :Aplikacionet Grafike -OpenGL ... Ne rastin tonë le të jetë Grafika. ... Në këtë shembull do

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

Page 9: Lënda:Programimi të maturës/Aplikacionet grafike.pdf · Lënda:Programimi Tema :Aplikacionet Grafike -OpenGL ... Ne rastin tonë le të jetë Grafika. ... Në këtë shembull do

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

Page 10: Lënda:Programimi të maturës/Aplikacionet grafike.pdf · Lënda:Programimi Tema :Aplikacionet Grafike -OpenGL ... Ne rastin tonë le të jetë Grafika. ... Në këtë shembull do

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);

Page 11: Lënda:Programimi të maturës/Aplikacionet grafike.pdf · Lënda:Programimi Tema :Aplikacionet Grafike -OpenGL ... Ne rastin tonë le të jetë Grafika. ... Në këtë shembull do

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. */ }