Βασικές αρχές σχεδίασης (Α)

Σχετικά έγγραφα
Γραφικά Υπολογιστών. Τμήμα Μηχανικών Πληροφορικής ΤΕΙ Ανατολικής Μακεδονίας και Θράκης. Γραφικά Υπολογιστών ΣΤ Εξάμηνο. Δρ Κωνσταντίνος Δεμερτζής

Εισαγωγή στην OpenGL

Κεφάλαιο 1 Βασικές αρχές σχεδίασης

Εισαγωγή στην OpenGL

OpenGL. Εισαγωγή στην OpenGL Βασικά Γεωμετρικά Σχήματα Παράλληλη (ορθογραφική) προβολή. Μάθημα: Γραφικά Υπολογιστών και Εικονική Πραγματικότητα

Απόδοση 3D σκηνών - Κινούµενα γραφικά

Εισαγωγή στην OpenGL: μέρος 1ο

Ανάπτυξη και Σχεδίαση Λογισμικού

OpenGL. Εισαγωγή. Εξάμηνο: 2014Β. Διδάσκουσα: Κανελλοπούλου Χριστίνα_ΠΕ19 Πληροφορικής Ηλεκτρονική Τάξη:

Προγραμματισμός γραφικών

ΠΛΗΡΟΦΟΡΙΚΗ Ι JAVA Τμήμα θεωρίας με Α.Μ. σε 3, 7, 8 & 9 25/10/07

3 ο Εργαστήριο Μεταβλητές, Τελεστές

Εικόνα. Τεχνολογία Πολυμέσων και Πολυμεσικές Επικοινωνίες 05-1

Μετασχηµατισµοί συντεταγµένων

Βασικές αρχές σχεδίασης (β)

Γραφικά Υπολογιστών: OpenGL

Τύποι Δεδομένων Είσοδος/Έξοδος

Διάλεξη 3η: Τύποι Μεταβλητών, Τελεστές, Είσοδος/Έξοδος

int array[10]; double arr[5]; char pin[20]; Προγραµµατισµός Ι

Δομημένος Προγραμματισμός (ΤΛ1006)

Εργαστήριο 2ο. Περίγραμμα Εργαστηριακής Άσκησης

1 ο Εργαστήριο Συντεταγμένες, Χρώματα, Σχήματα

C: Από τη Θεωρία στην Εφαρµογή 2 ο Κεφάλαιο

ΠΑΝΕΠΙΣΤΗΜΙΟ ΘΕΣΣΑΛΙΑΣ ΣΧΟΛΗ ΘΕΤΙΚΩΝ ΕΠΙΣΤΗΜΩΝ ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ

µπιτ Λύση: Κάθε οµάδα των τεσσάρων µπιτ µεταφράζεται σε ένα δεκαεξαδικό ψηφίο 1100 C 1110 E Άρα το δεκαεξαδικό ισοδύναµο είναι CE2

Δεδομένα, τελεστές, είσοδος/έξοδος

Κεφάλαιο 8.7. Πίνακες & Συναρτήσεις ( ιάλεξη 17) ιδάσκων: ηµήτρης Ζεϊναλιπούρ

! Εάν ο αριθμός διαθέτει περισσότερα bits, χρησιμοποιούμε μεγαλύτερες δυνάμεις του 2. ! Προσοχή στη θέση του περισσότερο σημαντικού bit!

Πράξεις με δυαδικούς αριθμούς

1 ΕΙΣΑΓΩΓΗ. Πρωταρχικοί Τύποι

ΗΥ-150. Προγραµµατισµός. Εντολές Ελέγχου Ροής

Προγραµµατιστικές Τεχνικές

Η πρώτη παράμετρος είναι ένα αλφαριθμητικό μορφοποίησης

Π. Σταθοπούλου ή Οµάδα Α (Φοιτητές µε µονό αριθµό Μητρώου ) ιδασκαλία : Παρασκευή 11πµ-13µµ ΗΛ7

Προγραμματισμός Ι (ΗΥ120)

2.1. Εντολές Σχόλια Τύποι Δεδομένων

Τύποι δεδομένων, τελεστές, μεταβλητές

Εισαγωγή στους Η/Υ. Γιώργος Δημητρίου. Μάθημα 7 και 8: Αναπαραστάσεις. Πανεπιστήμιο Θεσσαλίας - Τμήμα Πληροφορικής

ΕΡΓΑΣΤΗΡΙΟ 2 ΕΙΣΑΓΩΓΗ ΣΤΗ C. Εργαστήριο 2. Τµήµα Πληροφορικής και Τηλεπικοινωνιών

Εισαγωγή στην επιστήµη των υπολογιστών. Πράξεις µε µπιτ

Τύποι Δεδομένων και Απλές Δομές Δεδομένων. Παύλος Εφραιμίδης V1.0 ( )

ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ. Στοιχειώδεις Δοµές Δεδοµένων Δοµικά Στοιχεία και Πίνακες Κεφάλαιο 3 (3.1 και 3.2) Ε. Μαρκάκης Επικ. Καθηγητής

Δομημένος Προγραμματισμός

Εισαγωγή στην C. Μορφή Προγράµµατος σε γλώσσα C

Η δήλωση πού δηµιουργεί αποθήκευση τών δεδοµένων ονοµαζεται ορισµός τής µεταβλητής.

Προγραμματισμός Η/Υ 1 (Εργαστήριο)

Κεφάλαιο , 3.2: Συναρτήσεις II. ( ιάλεξη 12) ιδάσκων: ηµήτρης Ζεϊναλιπούρ

Σύστημα Πλεονάσματος. Αναπαράσταση Πραγματικών Αριθμών. Αριθμητικές Πράξεις σε Αριθμούς Κινητής Υποδιαστολής

Εισαγωγή στην πληροφορική

Κεφάλαιο 5 Απόδοση τρισδιάστατων σκηνών Κινούµενα γραφικά

Οικονόμου Βαγγέλησ Διάλεξη Νο 2. Δομημένοσ Προγραμματιςμόσ - Διάλεξη 2

Προγραμματισμός Ι (HY120)

Εικόνες και γραφικά. Τεχνολογία Πολυµέσων 05-1

ΕΡΓΑΣΤΗΡΙΟ 1 ΕΙΣΑΓΩΓΗ ΣΤΗ C. Τµήµα Πληροφορικής και Τηλεπικοινωνιών

Εισαγωγή στην επιστήμη των υπολογιστών

Δομημένος Προγραμματισμός. Τμήμα Επιχειρηματικού Σχεδιασμού και Πληροφοριακών Συστημάτων

Στόχοι και αντικείμενο ενότητας. Εκφράσεις. Η έννοια του τελεστή. #2.. Εισαγωγή στη C (Μέρος Δεύτερο) Η έννοια του Τελεστή

ΑΡΙΣΤΟΤΕΛΕΙΟ ΠΑΝΕΠΙΣΤΗΜΙΟ ΘΕΣΣΑΛΟΝΙΚΗΣ ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ ΓΡΑΦΙΚΑ ΥΠΟΛΟΓΙΣΤΩΝ Διδάσκων: Ν. ΝΙΚΟΛΑΙΔΗΣ

Προγραμματισμός Η/Υ (ΤΛ2007 )

Λύσεις Ασκήσεων ΣΕΙΡΑ 1 η. Πρόσημο και μέγεθος

Σύστημα Πλεονάσματος και Αναπαράσταση Αριθμών Κινητής Υποδιαστολής

Δύο είναι οι κύριες αιτίες που μπορούμε να πάρουμε από τον υπολογιστή λανθασμένα αποτελέσματα εξαιτίας των σφαλμάτων στρογγυλοποίησης:

ΔΟΜΗΜΕΝΟΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ Κεφάλαιο 8 : H γλώσσα προγραµµατισµού Pascal 1 ο Μέρος σηµειώσεων (Ενότητες 8.1 & 8.2 σχολικού βιβλίου)

ΑΣΚΗΣΗ 6: ΔΕΙΚΤΕΣ. Σκοπός της Άσκησης. 1. Εισαγωγικά στοιχεία για τους Δείκτες

3.1 Αριθμητικοί και Λογικοί Τελεστές, Μετατροπές Τύπου (Casting)

ΘΕΜΑΤΑ ΕΞΕΤΑΣΗΣ ΚΑΙ ΑΠΑΝΤΗΣΕΙΣ ΤΟΥΣ

Π. Σταθοπούλου ή Οµάδα Α (Φοιτητές µε µονό αριθµό Μητρώου ) ιδασκαλία : Παρασκευή 11πµ-13µµ ΗΛ7

Να αναφέρουµε τους πέντε τύπους δεδοµένων που χρησιµοποιούνται σε έναν υπολογιστή. Να περιγράψουµε τον τρόπο µε τον οποίο αποθηκεύονται οι

ΗΥ-150. Προγραμματισμός

Τμήμα Πληροφορικής & Επικοινωνιών Δρ. Θεόδωρος Γ. Λάντζος

ΗΥ-150. Προγραμματισμός

Γραφικά µε Υπολογιστές. Μετασχηµατισµοί Σύνθετη Γεωµετρία

Προγραμματισμός Ι (ΗΥ120)

Εισαγωγή στην επιστήμη των υπολογιστών. Υπολογιστές και Δεδομένα Κεφάλαιο 4ο Πράξεις με μπιτ

Εισαγωγή στη γλώσσα προγραμματισμού C++

Τμήμα Χρηματοοικονομικής & Ελεγκτικής ΤΕΙ Ηπείρου Παράρτημα Πρέβεζας. Πληροφορική Ι. Μάθημα 4 ο Πράξεις με bits. Δρ.

Περιεχόμενα. Πρόλογος... 21

ΠΛΗΡΟΦΟΡΙΚΗ I. 7 η ΔΙΑΛΕΞΗ Γραφικά με Υπολογιστή

Μεταφραστής (Compiler)

5.1 Θεωρητική εισαγωγή

1. Βάσεις αριθμητικών συστημάτων 2. Μετατροπές μεταξύ ξύβάσεων 3. Αρνητικοί δυαδικοί αριθμοί 4. Αριθμητικές πράξεις δυαδικών αριθμών

Εισαγωγή στην επιστήµη των υπολογιστών. Πράξεις µε µπιτ

Προγραμματισμός Η/Υ (ΤΛ2007 )

ΠΛΗΡΟΦΟΡΙΚΗ I Ενότητα 6

Προγραμματισμός Η/Υ (ΤΛ2007 )

ΠΑΝΕΠΙΣΤΗΜΙΟ AΙΓΑIΟΥ & ΑΕΙ ΠΕΙΡΑΙΑ Τ.Τ. Τμήματα Ναυτιλίας και Επιχειρηματικών Υπηρεσιών & Μηχ. Αυτοματισμού ΤΕ. Εισαγωγή στη Python

Διαδικασιακός Προγραμματισμός

ΒΑΣΙΚΟΙ ΤΥΠΟΙ ΚΑΙ ΠΙΝΑΚΕΣ

ΔΟΜΗΜΕΝΟΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ

Εισαγωγή στον Προγραµµατισµό «C»

Διαδικασιακός Προγραμματισμός

a = 10; a = k; int a,b,c; a = b = c = 10;

Τεχνολογία Πολυμέσων. Ενότητα # 5: Εικόνα Διδάσκων: Γεώργιος Ξυλωμένος Τμήμα: Πληροφορικής

ΑΣΚΗΣΗ 2 ΒΑΣΙΚΑ ΚΑΙ ΣΥΝΘΕΤΑ ΣΗΜΑΤΑ ΔΥΟ ΔΙΑΣΤΑΣΕΩΝ - ΕΙΚΟΝΑΣ

7 ο Εργαστήριο Θόρυβος 2Δ, Μετακίνηση, Περιστροφή

ΣΥΝΟΠΤΙΚΟΣ ΟΔΗΓΟΣ ΓΛΩΣΣΑΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ C

Βασικά στοιχεία της Java

Εισαγωγή στον Προγραμματισμό

> μεγαλύτερο <= μικρότερο ή ίσο < μικρότερο == ισότητα >= μεγαλύτερο ή ίσο!= διαφορετικό

Προγραμματισμός Η/Υ (ΤΛ2007 )

Transcript:

Βασικές αρχές σχεδίασης (Α)

Περιεχόµενα ενότητας Πρωτογενείς τύποι δεδοµένων Ονοµατολογία Συµβάσεις Η µηχανή καταστάσεων της OpenGL Περιβάλλον σχεδίασης Χρώµα Φιλοσοφία σχεδιάσης στην OpenGL Σχεδίαση σηµείων και γραµµών

Πρωτογενείς τύποι δεδοµένων Τύπος της OpenGL Τύπος δεδοµένων Αντίστοιχος τύπος στη C Επίθηµα GLbyte ακέραιος 8bits signed char b GLshort ακέραιος 16bits short s GLint / GLsizei ακέραιος 32bits int/long i GLfloat / GLclampf κινητής υποδιαστολής float f GLdouble / GLclampd κινητής υποδιαστολής διπλής ακρίβειας double d GLubyte / GLboolean ακέραιος 8bits χωρίς πρόσηµο unsigned char ub GLushort ακέραιος 16bits χωρίς πρόσηµο unsigned short us GLuint/GLenum/GLbitfield ακέραιος 32bits χωρίς πρόσηµο unsigned int unsigned long ui

Ονοµατολογία συµβολικών σταθερών στην OpenGL Συµβολικές σταθερές: προκαθορισµένες σταθερές που συνήθως χρησιµοποιούνται ως ορίσµατα σε εντολές τις OpenGL και εκπροσωπούν συγκεκριµένες ρυθµίσεις. Συµβολικές σταθερές της κύριας βιβλιοθήκης (core library): GL_(όνοµα_σταθεράς) Πχ GL_COLOR_BUFFER_BIT GL_LIGHTING Συµβολικές σταθερές της της βιβλιοθήκης GLUT GLUT_(όνοµα_σταθεράς) Π.χ. GLUT_RGB

Ονοµατολογία εντολών στην OpenGL (1) Στην OpenGL για ορισµένες εντολές ορίζονται πολλαπλές παραλλαγές, ανάλογα µε: τον τύπο των ορισµάτων που δέχονται (π.χ. ακέραιοι ή πραγµατικοί), τις διαστάσεις του χώρου (π.χ. σχεδίαση σε δύο ή τρείς διαστάσεις) το χρωµατικό µοντέλο τον τρόπο µε τον οποίο περνάµε ορίσµατα (call by value ή call by reference).

Ονοµατολογία εντολών στην OpenGL (2) Οι εντολές στην OpenGL έχουν επίθηµα πουκαθορίζειτο πλήθος και τύπο των ορισµάτων που δέχονται Σύµβαση: Τα επιθήµατα συνδυάζονται ως εξής gl +όνοµαεντολής +διάσταση χώρου ή πλήθος χρωµατικών τιµών {2,3,4} +επίθηµα πρωτογενούς τύπου δεδοµένων {ubsifd} +είδος ορισµάτων (τιµές ή δείκτες σε µητρώα) {-/v} glfunctionname{234}{ubsifd}{v}

Παράδειγµαονοµατολογίας: glvertex ήλωση σηµείου στο διδιάστατο χώρο {2} µε συντεταγµένες που δίνονται ως πραγµατικοί αριθµοί απλής ακρίβειας {f} glvertex2f (GLfloat x, GLfloat y); ήλωση σηµείου στον τρισδιάστατο χώρο {3} µε συντεταγµένες που δίνονται ως προσηµασµένοι ακέραιοι {i} glvertex3i(glint x, GLint y, GLint z); Για πραγµατικές συντεταγµένες {f} ενός σηµείου στον τρισδιάστατο χώρο {3} που δίνονται µετηµορφή µητρώου (όρισµα δείκτης σε πίνακα) {v} GLfloat coord[ ]={1,2,3}; glvertex3fv(const GLfloat *coord);

H OpenGL ως µηχανή καταστάσεων Το περιβάλλον της OpenGL λειτουργεί ως µια µηχανή καταστάσεων. Μηχανή καταστάσεων: Ένα περιβάλλον, το οποίο, σε κάθε χρονική στιγµή, λειτουργεί βάσει προκαθορισµένων ιδιοτήτων, των µεταβλητών κατάστασης (state variables). Μεταβλητές κατάστασης: Έχουν µια προκαθορισµένη αρχική τιµή η οποία µπορεί να µεταβληθεί κατά την πορεία της εκτέλεσης του κώδικα από τον προγραµµατιστή. Οι τρέχουσες τιµές των µεταβλητών παραµένουν ενεργές.

Παραδείγµατα µεταβλητών κατάστασης Ορισµένα παραδείγµατα µεταβλητών κατάστασης: 1) τρέχον χρώµασχεδίασης 2) πάχος γραµµών 3) χρώµα καθαρισµού της οθόνης (φόντου) Είναι σηµαντικό ο προγραµµατιστής να αρχικοποιεί τις µεταβλητές κατάστασης, όποτε αυτό είναι απαραίτητο και να παρακολουθεί τις τιµές τους.

Ιδιότητες δύο καταστάσεων Έχουν δύο πιθανές τιµές (TRUE ή FALSE) Καθορίζουν την ενεργοποίηση ή µη εξειδικευµένων λειτουργιών (µίξη χρωµάτων, φωτορεαλισµός, απόδοση υφής κ.λ.π). ίνοντας στον προγραµµατιστή τη δυνατότητα ενεργοποίησης λειτουργιών, η µηχανή της OpenGL βελτιστοποιεί το υπολογιστικό φορτίο.

Ιδιότητες δύο καταστάσεων Οι υποστηριζόµενες λειτουργίες της µηχανής καταστάσεων της OpenGL ενεργοποιούνται και απενεργοποιούνται µε τιςεντολές glenable και gldisable αντίστοιχα. void glenable(glenum cap); void gldisable(glenum cap); cap: Η ιδιότητα που ενεργοποιείται η απενεργοποιείται Πχ glenable(gl_blend); Ενεργοποίηση µίξης χρωµάτων Κάθε ιδιότητα που ενεργοποιείται παραµένει ενεργή σε όλη τη διάρκεια εκτέλεσης του προγράµµατος

Επισκόπηση ιδιοτήτων δύο καταστάσεων Προκειµένου να ελέγξουµεανµια ιδιότητα δύο καταστάσεων είναι ενεργοποιηµένη ή απενεργοποιηµένη χρησιµοποιούµε την εντολή glisenabled: GLboolean glisenabled(glenum capability); Επιστρέφει GL_TRUE ή GL_FALSE, ανάλογα µε τοανη εξεταζόµενη ιδιότητα είναι ενεργοποιηµένη ή όχι.

Ιδιότητες κατάστασης πολλαπλών τιµών Υπάρχουν µεταβλητές κατάστασης που µπορούν να πάρουν περισσότερες από δύο τιµές (πχ τρέχον χρώµασχεδίασηςή πάχος γραµµών) Οι τιµές των συνθετων ιδιοτήτων κατάστασης ρυθµίζονται µε ξεχωριστές εντολές της OpenGL ηκαθεµιά.

Επισκόπηση σύνθετων ιδιοτήτων κατάστασης Οι εντολές glget{type}v χρησιµοποιούνται για την επισκόπηση της τρέχουσας τιµής µεταβλητών κατάστασης void glgetbooleanv(glenum parametername, GLboolean *parameters); void glgetintegerv(glenum parametername, GLint *parameters); void glgetfloatv(glenum parametername, GLfloat *parameters); void glgetdoublev(glenum parametername, GLdouble *parameters); parametername: συµβολική σταθερά που καθορίζει την ιδιότητα parameters: δείκτης σε µητρώο όπου αποθηκεύεται η τιµή ήτοσύνολο τιµών που προσδιορίζουν την ιδιότητα.

Παράδειγµα: Επισκόπηση τρέχοντος χρώµατος σχεδίασης Το µητρώο parameters θα περιέχει τις τιµές τριών χρωµατικών συνιστωσών (µοντέλο RGB, διάσταση 3) GLfloat colorval[3]; Παράµετρος = τρέχον χρώµασχεδίασης parametername = GL_CURRENT_COLOR Αποθήκευση των τρεχουσών χρωµατικών συνιστωσών στο µητρώο colorval: glgetfloatv( GL_CURRENT_COLOR, colorval );

Σχεδίαση στην OpenGL Όλα τα γεωµετρικά σχήµατα ορίζονται µε δήλωση των κορυφών τους Σύνθετα σχήµατα προσεγγίζονται από στοιχειώδη βασικά σχήµατα. Κάθε σηµείο της σκηνής αναπαρίσταται, στη γενική περίπτωση, σε τρισδιάστατο καρτεσιανό σύστηµα συντεταγµένων Το σύστηµα συντεταγµένων είναι δεξιόστροφο. r x r y r z r y r z r x = = = r z r x r y

Οµογενείς συντεταγµένες Όλα τα σηµεία αναπαρίστανται µε τέσσερις συντεταγµένες κινητής υποδιαστολής (x, y, z, w). Ηδήλωσηενόςσηµείου µε οµογενείς συντεταγµένες (x, y, z, w) ορίζει στον τρισδιάστατο χώρο χώρο ένα σηµείο µε συντεταγµένες (x/w, y/w, z/w) Αν δε δίνεται η συντεταγµένη z, το σύστηµα θεωρείτηντιµή 0. Αν δε δίνεται η συντεταγµένη w, το σύστηµα θεωρείτηντιµή 1.

Καθαρισµός οθόνης Πριν το σχεδιασµό µιας σκηνής, απαιτείται ο καθαρισµός του ενταµιευτή χρωµατικών τιµών (color buffer) του υπολογιστή, Ενταµιευτής χρωµατικών τιµών: περιοχή µνήµης όπου αποθηκεύονται οι χρωµατικές πληροφορίες για τη σχεδιαζόµενη σκηνή Καθαρισµός οθόνης = αρχικοποίηση των ενταµιευτών µε κάποια προκαθορισµένη τιµή. Ο καθαρισµός τηε οθόνης γίνεται µετοχρώµα φόντου που επιλέγει ο προγραµµατιστής.

Ρύθµιση χρώµατος καθαρισµού Το χρώµα καθαρισµού της οθόνης είναι µεταβλητή κατάστασης και ορίζεται µε τηνεντολήglclearcolor. glclearcolor(glfloat red, GLfloat green, GLfloat blue, GLfloat alpha); red, green, blue, alpha: τα βάρη του χρώµατος στο χρωµατικό µοντέλο RGBA Το χρώµα καθαρισµού, ως µεταβλητή κατάστασης, διατηρεί την τελευταία τιµήπουτουανατέθηκε.

Καθαρισµός ενταµιευτών Ο καθαρισµός ενταµιευτών αυτός καθεαυτός γίνεται µε την εντολή glclear. void glclear(glenum buffer); buffer: ο ενταµιευτής που θέλουµε να καθαρίσουµε H µηχανή της OpenGL περιέχει πολλούς ενταµιευτές, οπότε πρεπει να καθορίσουµε τοείδοςτουενταµιευτή που επιθυµούµε να καθαρίσουµε GL_COLOR_BUFFER_BIT: καθαρισµός ενταµιευτή χρωµατικών τιµών (colour buffer) GL_DEPTH_BUFFER_BIT: καθαρισµός ενταµιευτή βάθους (depth buffer)

Παράδειγµα: Καθαρισµός ενταµιευτή χρωµατικών τιµών Καθαρισµός της οθόνης µε µαύρο χρώµα glclearcolor(0.0, 0.0, 0.0, 0.0); glclear(gl_color_buffer_bit); Oρίζουµε τοχρώµα καθαρισµού στην αρχή του προγράµµατός µας και κατόπιν καθαρίζουµετουςενταµιευτές όσο συχνά χρειάζεται.

Καθαρισµός πολλαπλών ενταµιευτών Η εντολήglclear επιτρέπει επίσης τον καθορισµό πολλαπλών ενταµιευτών µε µία µόνο κλήση της. ίνουµεωςπαραµέτρους πολλαπλούς ενταµιευτές διαχωρισµένους µε τελεστές OR ( ). Π.χ. για τον ταυτόχρονο καθαρισµό τουενταµιευτή χρωµατικών τιµών (color buffer) και του ενταµιευτή τιµών βάθους (depth buffer) δίνουµε: glclearcolor(0.0, 0.0, 0.0, 0.0); glcleardepth(0.0); glclear(gl_color_buffer_bit GL_DEPTH_BUFFER_BIT);

Καθορισµός χρωµάτων Κάθε φορά που δίνουµε εντολή σχεδιάσης ενός συγκεκριµένου γεωµετρικού σχήµατος, του αποδίδουµε το τρέχον χρώµασχεδίασης Το χρώµασχεδίασης, ως µεταβλητή κατάστασης, διατηρεί την τελευταία τιµή του. Γιανακαθορίσουµεέναχρώµα, χρησιµοποιούµετηνεντολή glcolor3{ub,f,d}. void glcolor3ub(glubyte red, GLubyte green, GLubyte blue); 0<r,g,b<255 void glcolor3f(glfloat red, GLfloat green, GLfloat blue); 0<r,g,b<1 void glcolor3d(gldouble red, GLdouble green, GLdouble blue); 0<r,g,b<1

Καθορισµός κορυφών Στην OpenGL, όλα τα γεωµετρικά σχήµατα περιγράφονται δηλώνοντας τις κορυφές τους. Για τον καθορισµό κάθεµίας κορυφής χρησιµοποιούµε την εντολή glvertex*. void glvertex{234}{sifd}[v](type coords); Με τις παραλλαγές της εντολής glvertex, µπορούµεναδώσουµεαπό δύο (x, y) µέχρι και τέσσερις συντεταγµένες (x, y, z, w) για µία κορυφή.

Παραδείγµατα καθορισµού κορυφών glvertex2s(2,3); ήλωση σηµείου µε ακέραιες συντεταγµένες (x,y)=(2,3) glvertex3d ( 0,0, 3.14 ); ήλωση σηµείου µε συντεταγµένες (x,y,z)=(0,0,3.14) glvertex4f ( 2.3, 1.0, -2.2, 2 ); ήλωση σηµείου ( 1.15, 0.5, -1.1 ) σε οµογενείς συντεταγµένες (w=2 ) GLdouble dvect[3] = {5,9,1}; glvertex3dv(dvect); ( ήλωση σηµείου που οι τιµές του ορίζονται στο µητρώο dvect)

Ηδοµή glbegin/glend Ο ορισµός των κορυφών κάθε γεωµετρικού σχήµατος περικλείεται µεταξύ δύο εντολών, των glbegin και glend. void glbegin(glenum mode); void glend(); Μεταξύ των εντολών glbegin και glend περικλείονται εντολές δήλωσης σηµείων ορίζουν ένα γεωµετρικό σχήµα ήµία οµάδα γεωµετρικών σχηµάτων. Το είδος του γεωµετρικού σχήµατος που ορίζεται, εξαρτάται από την συµβολική σταθερά mode που δίνουµεωςπαράµετρο στην εντολή glbegin.

Σχεδίαση µεµονωµένων σηµείων (GL_POINTS) ίνουµεωςόρισµαστηνglbegin τη σταθερά GL_POINTS. Παράδειγµα glbegin(gl_points); glvertex2i(10,10); glvertex2i(20,10); glend(); Ορισµός δύο σηµείων µε συντεταγµένες (10,10) και (20,10).

Πάχος σηµείων Για τη ρύθµιση του µεγέθους ενός σηµείου, χρησιµοποιούµετην εντολή glpointsize: void glpointsize(glfloat size); size: το πλάτος του σηµείου σε pixels Η προκαθορισµένη τιµήτουπάχπυςγραµµής είναι 1. Το πάχος σηµείων είναι µεταβλητή κατάστασης, άρα διατηρεί την τελευταία του τιµή.

Σχεδίαση γραµµών Οι γραµµές χαράσσονται ορίζοντας τις συντεταγµένες των άκρων τους. Οι εντολές σχεδιάσης γραµµών µας επιτρέπουν να σχεδιάσουµε α) Ευθύγραµµατµήµατα β) Αλυσίδες ευθυγράµµων τµηµάτων γ) Βρόχους ευθυγράµµων τµηµάτων

Ευθύγραµµατµήµατα (GL_LINES) glbegin(gl_lines); Τα δοθέντα σηµεία ορίζουν ανά ζεύγη ευθύγραµµατµήµατα. Όταν ο αριθµός των σηµείων είναι περιττός, το τελευταίο σηµείο αγνοείται. glbegin(gl_lines); glvertex*(v0); glvertex*(v1); glvertex*(v2); glvertex*(v3); glvertex*(v4); glvertex*(v5); glend();

Αλυσίδα ευθυγράµµων τµηµάτων glbegin(gl_line_strip); Τα σηµεία ορίζουν διαδοχικά ευθύγραµµατµήµατα. glbegin(gl_line_strip); glvertex*(v0); glvertex*(v1); glvertex*(v2); glvertex*(v3); glvertex*(v4); glvertex*(v5); glend();

Βρόχος ευθυγράµµων τµηµάτων glbegin(gl_line_loop): Τα σηµείαορίζουνδιαδοχικάευθύγραµµα τµήµατα. Το τελευταίο σηµείo ενώνεται µε τοαρχικό. glbegin(gl_line_loop); glvertex*(v0); glvertex*(v1); glvertex*(v2); glvertex*(v3); glvertex*(v4); glvertex*(v5); glend();

Ιδιότητες γραµµών α) Πάχος γραµµών Τροποποιείται µετηχρήσητηςεντολήςgllinewidth: void gllinewidth(glfloat width); width: το πάχος της γραµµής σε pixels β) ιάστιξη γραµµών Χρήσιµη για τη σχεδιάση διακεκοµµένων γραµµών Η διάστιξη γραµµών ενεργοποιείται δίνοντας την παράµετρο GL_LINE_STIPPLE στην εντολή glenable( ): glenable(gl_line_stipple);

Ρύθµιση διάστιξης γραµµών void gllinestipple (GLint factor, GLushort pattern); Το όρισµα pattern καθορίζει το µοτίβο των ευθειών. ίνεται σε δεκαεξαδική µορφή (πχ 0x0A0A). Αναπαράσταση δεκαεξαδικών συµβόλων στο δυαδικό σύστηµα: 0 = 0000 4 = 0100 8 = 1000 C = 1100 1 = 0001 5 = 0101 9 = 1001 D = 1101 2 = 0010 6 = 0110 A = 1010 E = 1110 3 = 0011 7 = 0111 B = 1011 F = 1111

Σχηµατισµός µοτίβου Αναπαριστούµε την αριθµητική τιµή του ορίσµατος pattern σε δυαδική µορφή Π.χ. ο δεκαεξαδικόςαριθµός 0x00ΑΑ αναπαρίσταται ως 0 0 A A 0000 0000 1010 1010 0000000010101010 Οι θέσεις των µονάδων στη δυαδική ακολουθία καθορίζουν τα pixels της γραµµής που θα σχεδιαστούν. Οι θέσεις των µηδενικών καθορίζουν τα pixels που θα παραµείνουν κενά. Π.χ. Ο δεκαεξαδικός0x00aa (για factor=1) ορίζει το µοτίβο: Το µοτίβο ξεκινάει από το λιγότερο σηµαντικό ψηφίο της δυαδικής ακολουθίας.

Κλιµάκωση µοτίβου void gllinestipple (GLint factor, GLushort pattern); factor: κλιµακώνει το µοτίβο. Αναπαράγει κάθε ψηφίο της δυαδικής ακολουθίας όσες φορές δηλώνει η τιµή του. Πχ για factor ίσο µε 2 και pattern 0x00AA gllinestipple(2, 0x00AA); Παράγουµε την ακόλουθη διάστιξη Η διάστιξη γραµµών, ως παράµετρος κατάστασης, παραµένει ενεργή.

Τέλος ενότητας!