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



Σχετικά έγγραφα
Εισαγωγή στην OpenGL

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

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

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

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

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

Εργαλεία Δημιουργίας Τρισδιάστατων Γραφικών

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

Γραφικά Υπολογιστών: Εμφάνιση σε 2D

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

OpenGL. Μετασχηματισμοί. Μάθημα: Γραφικά Υπολογιστών και Εικονική Πραγματικότητα. Κατερίνα Παπαδοπούλου /

Γραφικά Υπολογιστών: Βασικά Μαθηματικά

Απαραίτητες αφού 3Δ αντικείμενα απεικονίζονται σε 2Δ συσκευές. Θέση παρατηρητή. 3Δ Μετασχ/σμός Παρατήρησης

Γραφικά με Η/Υ / Εισαγωγή

Γραφικά Υπολογιστών: Θέαση στις 3D

Οδηγίες σχεδίασης στο περιβάλλον Blender

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

Γραφικά Υπολογιστών: Προοπτικές Προβολές (Perspective Projections)

Γραφικά Υπολογιστών: Μέθοδοι Ανίχνευσης Επιφανειών (Surface Detection Methods)

4 ο Εργαστήριο Τυχαίοι Αριθμοί, Μεταβλητές Συστήματος

Εισαγωγή στο 3DS Max 2009

Κεφάλαιο 1: Κίνηση και γεωμετρικά σχήματα

21. ΦΥΛΛΟ ΕΡΓΑΣΙΑΣ 4 - ΔΗΜΙΟΥΡΓΩΝΤΑΣ ΜΕ ΤΟ BYOB BYOB. Αλγόριθμος Διαδικασία Παράμετροι

Περιεχόµενα ενότητας

Τμήμα Μηχανικών Σχεδίασης Προϊόντων & Συστημάτων ΓΡΑΦΙΚΑ (6151) ΕΝΔΕΙΚΤΙΚΕΣ ΠΡΟΑΙΡΕΤΙΚΕΣ ΑΣΚΗΣΕΙΣ

Άσκηση 6 η Ανύψωση Σχημάτων. Στόχος της άσκησης

Εισαγωγή. Γιατί γραφικά υπολογιστών; Προσέγγιση «από πάνω προς τα κάτω» (top-down). Βαθµίδα διασύνδεσης προγραµµατιστή εφαρµογών (API)

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

Η διαδικασία Παραγωγής Συνθετικής Εικόνας (Rendering)

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

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

Γραφικά Υπολογιστών: Αποκοπή στις 3D Διαστάσεις

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

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

Γραφικά υπολογιστών Εργαστήριο 10 Εισαγωγή στα Sprites

Κεφάλαιο 7. Τρισδιάστατα Μοντέλα

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

ΚΕΦΑΛΑΙΟ 3 Ο ΒΑΣΙΚΕΣ ΑΡΧΕΣ ΣΧΕΔΙΟΥ ΔΡ ΛΕΩΝΙΔΑΣ ΑΝΘΟΠΟΥΛΟΣ, ΕΠΙΚΟΥΡΟΣ ΚΑΘΗΓΗΤΗΣ ΤΜΗΜΑ ΔΙΟΙΚΗΣΗΣ ΚΑΙ ΔΙΑΧΕΙΡΙΣΗΣ ΕΡΓΩΝ ΤΕΙ ΛΑΡΙΣΑΣ

Κεφάλαιο 3 Βασική Σχεδίαση και Επεξεργασία

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

Κλασσική παρατήρηση & παρατήρηση με υπολογιστή

Φύλλο 2. Δράσεις με το λογισμικό Cabri-geometry 3D

Είσοδος Έξοδος ιαχείριση γεγονότων Απόδοση 2 σκηνών

Προγραμματιστικές Ασκήσεις, Φυλλάδιο 1

α) Κύκλος από δύο δοσµένα σηµεία Α, Β. Το ένα από τα δύο σηµεία ορίζεται ως κέντρο αν το επιλέξουµε πρώτο. β) Κύκλος από δοσµένο σηµείο και δοσµένο ευ

Ενότητα 2. Ζωγραφίζοντας με το ΒΥΟΒ

Συστήματα συντεταγμένων

2.0 ΒΑΣΙΚΕΣ ΓΝΩΣΕΙΣ-ΟΡΟΛΟΓΙΕΣ

ισδιάστατοι μετασχηματισμοί ΚΕΦΑΛΑΙΟ 4: ισδιάστατοι γεωμετρικοί μετασχηματισμοί

Δημιουργώντας γραφικά στο περιβάλλον 3Ds Max χρησιμοποιώντας βασικά εργαλεία

Γραφικά Υπολογιστών: Σχεδίαση γραμμών (Bresenham), Σχεδίασης Κύκλων, Γέμισμα Πολυγώνων

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

Σύντομος οδηγός αναφοράς Για Windows Έκδοση 4.0

3) το παράθυρο Πίνακας τιμών όπου εμφανίζονται οι τιμές που παίρνουν οι παράμετροι

9. Συστολικές Συστοιχίες Επεξεργαστών

Δημιουργώντας εφέ φωτισμού στο περιβάλλον 3Ds Max χρησιμοποιώντας βασικά εργαλεία

Θεωρία μετασχηματισμών

Οδηγίες για το Geogebra Μωυσιάδης Πολυχρόνης Δόρτσιος Κώστας

αξιοποίηση των ΤΠΕ: Η logo στη διδακτική διδακτική πράξη

ΕΙΣΑΓΩΓΗ ΒΑΣΙΚΕΣ ΕΝΝΟΙΕΣ ΣΧΕΔΙΑΣΗΣ ΔΡ ΛΕΩΝΙΔΑΣ ΑΝΘΟΠΟΥΛΟΣ, ΕΠΙΚΟΥΡΟΣ ΚΑΘΗΓΗΤΗΣ ΤΜΗΜΑ ΔΙΟΙΚΗΣΗΣ ΚΑΙ ΔΙΑΧΕΙΡΙΣΗΣ ΕΡΓΩΝ ΤΕΙ ΛΑΡΙΣΑΣ

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

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

Γραφικά με υπολογιστές. Διδάσκων: Φοίβος Μυλωνάς. Διάλεξη #07

Αρχιτεκτονική σχεδίαση με ηλεκτρονικό υπολογιστή

Σχεδίαση με Ηλεκτρονικούς Υπολογιστές

Μπορούμε να χρησιμοποιήσουμε τις παρακάτω μορφές συντεταγμένων με οποιοδήποτε συνδυασμό θέλουμε. Καρτεσιανές συντεταγμένες

5 ο Εργαστήριο Δομές Επανάληψης (συνέχεια)

διανύσματα - Πίνακες - Struct Στατικό διάνυσμα Είσοδος Έξοδος δεδομένων Συναρτήσεις Χειρισμός σφαλμάτων ΤΕΤΑΡΤΗ ΔΙΑΛΕΞΗ

ΦΩΤΟΡΕΑΛΙΣΜΟΣ & ΚΙΝΗΣΗ (ΘΕΩΡΙΑ)

Γραφιστική Πληροφορίας σε 3D

ΚΕΦΑΛΑΙΟ 5: ΑΠΕΙΚΟΝΙΣΗ ΚΑΙ ΑΠΟΚΟΠΗ

Γραφικά με υπολογιστές

1 η ΕΝΟΤΗΤΑ ΕΙΣΑΓΩΓΗ (Προγραμματισμός & MATLAB)

Ο ΗΓΟΣ ΧΡΗΣΗΣ ΓΕΩΜΕΤΡΙΑ

ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΥΠΡΟΥ,

Πληρουορική Γ Γσμμασίοσ

Εφαρμογές πολυμέσων για τη διδασκαλία των Μαθηματικών

Κεφάλαιο 8. Οπτικοποίηση Απαλοιφή

Παράδειγμα «Ημίτονο και ζωγραφική!»: Έχει δει στα μαθηματικά τη γραφική παράσταση της συνάρτησης του ημιτόνου; Σας θυμίζει κάτι η παρακάτω εικόνα;

Άσκηση 6 Σύνθετα Αντικείµενα. Στόχος της άσκησης

Γραφικά με Η/Υ Αποκοπή

ΤΟΜΟΣ Α : Συμβολικός Προγραμματισμός

ΕΡΓΑΣΤΗΡΙΑΚΗ ΑΣΚΗΣΗ 1

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

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

Τέκτων 10. for Windows. Εκπαιδευτική Έκδοση Σύντομο αρχιτεκτονικό παράδειγμα. Αθήνα, Μάιος Version_1_0_1

Η Βιβλιοθήκη Γραφικών OpenGl Με Χρήση C/C++, JAVA και PYTHON

Τι είναι τα πολυμέσα;

Προγραμματισμός με Logo στο MicroWorlds Pro

Χρονικές σειρές 1 ο μάθημα: Εισαγωγή στη MATLAB

Γραφικά & Οπτικοποίηση. Κεφάλαιο 1. Εισαγωγή. Γραφικά & Οπτικοπίηση: Αρχές & Αλγόριθμοι Κεφάλαιο 1

Επεξεργασία Χαρτογραφικής Εικόνας

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

2 ΟΥ και 7 ΟΥ ΚΕΦΑΛΑΙΟΥ

Καµπύλες Bézier και Geogebra

Γραφικά Υπολογιστών & Εικονική Πραγματικότητα. Μετασχηματισμός απεικόνισης & Αλγόριθμοι αποκοπής

Εισαγωγή στο Τεχνικό σχέδιο με Η/Υ (CAD)

Πρακτική εφαρμογή στην ειδικότητα: Λογισμικό για τη δημιουργία εργασίας εξαμήνου

Απεικόνιση Υφής. Μέρος Α Υφή σε Πολύγωνα

Άσκηση 11 Υλικά. Στόχος της άσκησης

Transcript:

Τεχνικός Εφαρμογών Πληροφορικής Εισαγωγή OpenGL Εξάμηνο: 2014Β Διδάσκουσα: Ηλεκτρονική Τάξη: http://moodleforall.ictlab.edu.gr/

Περιεχόμενα 1. Τι είναι η OpenGL 2. Μηχανή καταστάσεων 3. Η εξέλιξη της 4. Βασικές έννοιες γραφικών 5. Είδη γραφικών 6. Γραφικά Μαθηματικά 7. Σημεία Γραμμές Πολύγωνα 8. Θεμελιώδη σχήματα

Τι είναι η OpenGL Είναι το πρότυπο της βιομηχανίας γραφικών για real-time 3d rendering Χρησιμοποιείται για την δημιουργία 3d/2dδιαδραστικών εφαρμογών Είναι διεπαφή προγραμματισμού εφαρμογών (API) για γραφικά υπολογιστών. Αποτελεί διεπαφή μεταξύ μιας γλώσσας προγραμματισμού και του υλικού του υπολογιστή -> Δεν είναι γλώσσα προγραμματισμού

Τι είναι η OpenGL Είναι ανεξάρτητη από το υλικό και το λειτουργικό σύστημα. Χρησιμοποιείται από πληθώρα γλωσσών προγραμματισμού, π.χ. C++, Java Παρέχει μια βιβλιοθήκη συναρτήσεων (περίπου 700 ρουτίνες) για το χειρισμό βασικών λειτουργιών γραφικών. Υπάρχουν βοηθητικές βιβλιοθήκες για το χειρισμό ειδικών λειτουργιών που σχετίζονται με την διαχείριση παραθύρων, της εισόδου δεδομένων από την πλευρά του χρήστη, κ.α.

Τι είναι η OpenGL O προγραμματιστής βλέπει το σύστημα γραφικών μέσω των βιβλιοθήκων -- OpenGL -- Direct X (Microsoft) -- Java 3D

OpenGL - Μηχανή Καταστάσεων Λειτουργεί ως μηχανή καταστάσεων (state machine) (περιβάλλον) Μια κατάσταση ορίζεται από τις τιμές ενός συνόλου μεταβλητών κατάστασης (state variables). Μια μεταβλητή κατάστασης μπορεί να πάρει διάφορες τιμές ή να είναι ενεργοποιημένη ή όχι. Η μεταβλητή κατάστασης διατηρεί την τιμή της μέχρι να γίνει αλλαγή αυτής της τιμής κατά τη διάρκεια εκτέλεσης του προγράμματος. Παραδείγματα μεταβλητών κατάστασης: χρώμα σχεδίασης, το πάχος των σχεδιαζόμενων γραμμών, το χρώμα καθαρισμού της οθόνης κ.λ.π

Η εξέλιξη της OpenGL Η Silicon Graphics (SGI), έφερε την επανάσταση στα PC-γραφικά με την ανάπτυξη ενός γραφικού συστήματος που επιτρέπει την πρόσβαση στα graphics hardware με την υλοποίηση pipeline αγωγού σε (1982) Για να χρησιμοποιήσουν αυτό το σύστημα οι προγραμματιστές εφαρμογών έκαναν χρήση μιας βιβλιοθήκης με το όνομα GL (Graphics Library) Με την GL, ήταν σχετικά απλός ο προγραμματισμός διαδραστικών τριδιάστατων (3D) εφαρμογών

Η εξέλιξη της OpenGL Η επιτυχία της GL οδήγησε στην OpenGL το 1992, μια API βιβλιοθήκη ανεξάρτητη πλατφόρμας που ήταν: -- Εύκολη στην χρήση -- Συνεργάζεται στενά με το hardware με πολύ καλά αποτελέσματα απόδοσης (performance) -- Εστιάζει στην απόδοση (rendering) γραφικών -- Δεν προσφέρει «παράθυρα» (windowing) και «είσοδο» (input) για να αποφύγει εξάρτηση από ένα συγκεκριμένο παραθυρικό Λειτουργικό Σύστημα (MS, Unix/Linux, Mac) -- Συνδέεται με C, C++, Java, Python, Processing, Ruby, κ.ά

Η εξέλιξη της OpenGL Ελέγχεται από την Architectural Review Board (ARB) Μέλη SGI, Microsoft, Nvidia, HP, 3DLabs, IBM, Αρκετά σταθερή μετά την version 1.4 Η εξέλιξη αναπαράγει νέες δυναμικές δυνατότητες (capabilities) στο hardware 3D σχεδίαση (mapping) υφής και αντικείμενα υφής Προγράμματα κορυφών (Vertex programs) Με επεκτάσεις ενσωματώνει συγκεκριμένα χαρακτηριστικά κάθε πλατφόρμας Πληροφορίες και υλικό http://www.opengl.org

Βασικές έννοιες γραφικών Τα Γραφικά με Η/Υ αναφέρονται στη μεταφορά σε ψηφιακό επίπεδο αντικειμένων, φαινομένων, διαδικασιών και σχέσεων που υφίστανται ή εξελίσσονται στον πραγματικό κόσμο. Η μεταφορά αυτή επιτυγχάνεται με τη δημιουργία (modeling), την παρουσίαση (rendering) και την απόδοση (visualization) σχετικών πληροφοριών σε επίπεδο ψηφιακής αναπαράστασης. Ειδικότερα, η δημιουργία έχει ως στόχο τη δισδιάστατη ή τρισδιάστατη γεωμετρία, η παρουσίαση τη φωτορρεαλιστική αναπαράσταση και η απόδοση τη σύνθετη οπτικοποίηση της γραφικής πληροφορίας. [Στυλιάδης, 1999]

Είδη Γραφικών 2D (2Δ) Δισδιάστατα (επίπεδα) γραφικά Είναι η δημιουργία και μετατροπή σε ψηφιακή εικόνα επίπεδων διανυσματικών σχημάτων και συμβόλων (glyphs) Η διαδικασία αυτή αποκαλείται «Rasterization

Είδη Γραφικών 2D (2Δ) Τα δύο διαστάσεων γραφικά μπορούν να καταταγούν στις εξής δύο μεγάλες κατηγορίες: Διανυσματικά γραφικά (Vector Graphics): Χρησιμοποιούνται για τη δημιουργία εικόνων όπως λογότυπα, σήματα κτλ. αλλά και ψευδο-τρισδιάστατων σχημάτων (προοπτική). (cdr,.ai) Γραφικά ψηφίδων (bitmap graphics): Όλα τα γραφικά που δημιουργούνται από ψηφιοποίηση υπαρκτών αντικειμένων (φωτογραφίες, εικόνες από σαρωτές κτλ.) ανήκουν σε αυτή την κατηγορία.(.tif,.bmp, jpg,.gif,.png) https://www.youtube.com/watch?v=fy9pby0gzsc Ως διάνυσμα ορίζεται η διαφορά δύο σημείων Τα διανύσματα έχουν κατεύθυνση και μήκος

Είδη Γραφικών 3D (3Δ) Τρισδιάστατα γραφικά Είναι οι μέθοδοι περιγραφής, προβολής και μετατροπής σε ψηφιακή εικόνα τρισδιάστατων αντικειμένων (συνθετική εικόνα) Τα 3Δ γραφικά είναι πολύ ευρύτερος τομέας από τα 2D γραφικά με αρκετά σύνθετες διαδικασίες 3D συντεταγμένες Αλγόριθμοι απεικόνισης 3D συντεταγμένες και συνδέσεις Συνθετική εικόνα

Είδη Γραφικών 3D (3Δ) Στατικά Γραφικά Υπολογιστών Τα στατικά γραφικά υπολογιστών αποτελούν αντικείμενα γραφικών τα οποία δεν αποδίδονται την στιγμή που εκτελούνται αλλά έχουν αποδοθεί μία φορά κατά τη δημιουργία τους. Παράδειγμα τέτοιων γραφικών είναι τα μικρά βίντεο, τα οποία εμφανίζονται σε διάφορα παιχνίδια, και τα οποία έχουν "γυριστεί" μια φορά και κάθε φορά που θα τα παρακολουθήσουμε παραμένουν ίδια. Για τη δημιουργία τους χρησιμοποιείται κάποιο πρόγραμμα δημιουργίας γραφικών και κίνησης (animation) όπως το 3dStudio Max, το Maya, το Lightwave, το Blender,το cinema4d κτλ.

Είδη Γραφικών 3D (3Δ) Γραφικά Υπολογιστών Πραγματικού Χρόνου Τα γραφικά υπολογιστών πραγματικού χρόνου αποτελούν αντικείμενα γραφικών τα οποία αποδίδονται την στιγμή που εκτελούνται. Για παράδειγμα τα γραφικά που εμφανίζονται στην οθόνη ενός υπολογιστή, ο οποίος εκτελεί ένα παιχνίδι, ανήκουν συνήθως σε αυτήν την κατηγορία. Για τη δημιουργία τους απαιτείται κάποια μηχανή απόδοσης γραφικών (graphics rendering engine) πραγματικού χρόνου, όπως για παράδειγμα το Ogre3d, το Irrlich, το Crystal Space κτλ.

Γραφικά - Μαθηματικά Ένα μεγάλο κομμάτι των γραφικών βασίζονται στα Μαθηματικά.

Καρτεσιανό Σύστημα συντεταγμένων - 2D Όταν δημιουργούμε μια εικόνα γραφικών ορίζουμε την εικόνα χρησιμοποιώντας απλή 2D γεωμετρία. Σε 2D εικόνες-σκηνές χρησιμοποιούνται δισδιάστατες Καρτεσιανές συντεταγμένες. Όλα τα αντικείμενα ορίζονται με ζευγάρια απλών συντεταγμένων.

Καρτεσιανό Σύστημα συντεταγμένων - 2D

Καρτεσιανό Σύστημα συντεταγμένων 3D

Καρτεσιανό Σύστημα συντεταγμένων 3D Σύστημα αναφοράς. Υπάρχουν δύο διαφορετικοί τρόποι να σχηματίσουμε 3D συντεταγμένες Δεξιού χεριού ή Αριστερού χεριού.

Σημεία = Points= Verticies Ένα σημείο στον δισδιάστατο χώρο παρίσταται ως ένα ζευγάρι τιμών (ordered pair) (x, y) Στον τρισδιάστατο χώρο παρίσταται ως μια τριπλέτα τιμών (ordered triple) (x, y, z)

Γραμμές = Ευθύγραμμα τμήματα = Lines = Segments Μια γραμμή ορίζεται κάνοντας χρήση ενός σημείου_αρχής και ενός σημείου_τέλους. στις 2d: (xstart, ystart) εως (xend, yend) στις 3d: (xstart, ystart, zstart) εως (xend, yend, zend)

Σημεία & Γραμμές

Πολύγωνα = Polygons Πολύγωνα: περιοχές που περικλείονται από βρόχους (επαναλήψεις) ευθύγραμμων τμημάτων. Τα πολύγωνα σχεδιάζονται συμπαγή ή τα περιγράμματά τους ή οι κορυφές τους. Κατηγορίες πολυγώνων: κυρτά και κοίλα Kυρτά πολύγωνα: Όλες οι εσωτερικές γωνίες τους είναι μικρότερες των 180 μοιρών Κοίλα πολύγωνα: Περιέχουν τουλάχιστον μια εσωτερική γωνία μεγαλύτερη των 180 μοιρών.

OpenGL Βιβλιοθήκες -- OpenGL Library -- OpenGL Utility Library (GLU) -- OpenGL Utility Toolkit (GLUT) Οι τρείς αυτές βιβλιοθήκες συνήθως αναφέρονται ως OpenGL MS-Windows, Unix/Linux, Mac X OS

OpenGL Βιβλιοθήκες OpenGL βασική (core) βιβλιοθήκη, έχει σχεδιαστεί ως μια βελτιωμένη διεπαφή ανεξάρτητη από το hardware -- OpenGL32 για Windows -- GL για Unix/Linux συστήματα GLU παρέχει πολλά από τα χαρακτηριστικά μοντέλων, όπως quadric επιφάνειες και NURBS καμπύλες και επιφάνειες. -- Παρέχει λειτουργικότητα στην βασική OpenGL αλλά δεν χρειάζεται να ξαναγράψουμε κώδικα GLUT συνδέει την OpenGL με το παραθυρικό σύστημα -- GLX για X συστήματα -- WGL για Windows -- AGL για Macintosh

Βασική βιβλιοθήκη OpenGL

GLU & GLUT

Μορφή εντολών σε OpenGL Η OpenGL χρησιμοποιεί μια απλή, στάνταρντ, μορφή ονοματολογίας για τις εντολές της. Όλες οι εντολές της έχουν μορφή παρόμοια με: Οι εντολές του GLUT δεν έχουν κάποιο ιδιαίτερο χαρακτηριστικό εκτός του ότι κάθε εντολή ξεκινά με το πρόθεμα glut: glutinitwindowsize(width, Height);

Τύποι δεδομένων OpenGL Χάριν ομοιομορφίας, και για να μπορέσει να υποστηρίξει διαφορετικές πλατφόρμες, η OpenGL ορίζει μια σειρά από τύπους δεδομένων οι κυριότεροι των οποίων φαίνονται στο παρακάτω πίνακα:

Προβολή Η OpenGL υποστηρίζει 2 ειδών μετασχηματισμούς προβολών την ορθογραφική προβολή (orthographic projection) και την προβολή με προοπτική (perspective projection). Μια ορθογραφική προβολή δημιουργείται με την χρήση της εντολής glortho(gldouble left, GLdouble right, GLdouble bottom, GLdouble top, GLdouble near, GLdouble far ); Η εντολή αυτή ορίζει ένα κύβο αποκοπής παρέχοντας τις συντεταγμένες 2 διαγώνιων κορυφών.

Μια προβολή με προοπτική δημιουργείται με την χρήση της εντολής gluperspective(gldouble fovy, GLdouble aspect, GLdouble znear, GLdouble zfar); Η παράμετρος fovy ορίζει την γωνία οπτικού πεδίου στην κάθετη κατεύθυνση, η aspect καθορίζει την αναλογία μήκους/πλάτους του κοντινού πεδίου αποκοπής και οι znear και zfar την απόσταση του κοντινού (near) και μακρινού (far) πεδίου αποκοπής κατά τον άξονα Ζ.

OpenGL εφαρμογές Για να δημιουργήσουμε μια εφαρμογή OpenGL πρέπει πρώτα να κατασκευάσουμε την οθονή στην οποία θα γίνονται όλα τα draws. Οι βασικές συναρτήσεις για να το πετύχουμε αυτο είναι: glutinit glutinitdisplaymode glutinitwindowsize glutcreatewindow glutmainloop

glutinit Η πρώτη συνάρτηση που θα δούμε είναι η glutinit(int * argcp,char **argvp). Ως ορίσματα παίρνει τα ορίσματα που παιρνάμε σε μια συνάρτηση main: τα argc και argv. Αυτο που κάνει η glutinit είναι να αρχικοποιεί την glut(opengl) και να φτιάχνει με την βοήθεια του συστήματος ένα παράθυρο.

glutinitwindowposition Η θέση στην οθόνη, στην οποία θα εμφανιστεί το παράθυρο της εφαρμογής μας, καθορίζεται με την εντολή glutinitwindowposition. void glutinitwindowposition(int x, int y); όπου x,y οι συντεταγμένες του άνω αριστερού άκρου του παραθύρου. Το σημείο (0,0) αντιστοιχεί στην άνω αριστερή γωνία της οθόνης. Η θετική φορά του οριζόντιου άξονα είναι προς τα δεξιά και του κατακόρυφου άξονα προς τα κάτω. Οι διαστάσεις της επιφάνειας σχεδίασης καθορίζονται αρχικά με την εντολή glutinitwindowsize

glutinitwindowsize Αμέσως μετα ακολουθεί η συνάρτηση void glutinitwindowsize(int width, int height); Αυτη η συνάρτηση διαμορφώνει το μέγεθος του παραθύρου μας ανάλογα με τα ορίσματα width,height που θα περάσουμε.

glutinitdisplaymode Στην ουσία αυτο που κάνει η συνάρτηση είναι να περνάει επιλογές για το παραθυρο μας. Οι επιλογές αυτες είναι καθορισμένες σε είδος και πλήθος απο την OpenGL.

glutinitdisplaymode Κατά την αρχικοποίηση του παραθύρου ορίζουμε αν αυτό προορίζεται να περιέχει στατικές σκηνές ή κινούμενα γραφικά όπως και το χρωματικό μοντέλο που θα χρησιμοποιηθεί. Οι ρυθμίσεις αυτές δίνονται με την εντολή glutinitdisplaymode: void glutinitdisplaymode(unsigned int mode); όπου mode προκαθορισμένες αριθμητικές σταθερές που παίρνουν τις παρακάτω τιμές:

glutinitdisplaymode GLUT_SINGLE: Για την απεικόνιση χρησιμοποιείται η τεχνική της απλής ενταμίευσης (χρησιμοποιείται ένας ενταμιευτής χρωματικών τιμών). Αυτή η ρύθμιση επιλέγεται για τη σχεδίαση στατικών σκηνών. GLUT_DOUBLE: Χρησιμοποιείται η τεχνική της διπλής ενταμίευσης (double buffering) χρησιμοποιούνται δηλαδή δύο ενταμιευτές χρωματικών τιμών. Η επιλογή αυτή ενδείκνυται για την παρουσίαση κινούμενων γραφικών. GLUT_RGB: Τα χρώματα ορίζονται με την περιγραφή τους στο χρωματικό μοντέλο RGB. Κάθε χρώμα δηλαδή περιγράφεται από τους συντελεστές βάρους της κόκκινης, της πράσινης και μπλε χρωματικής συνιστώσας του. GLUT_RGBA: Τα χρώματα ορίζονται στο μοντέλο RGBA. GLUT_INDEX: Χρήση του μοντέλου χρωματικών πινάκων (colour tables).

glutinitdisplaymode Οι παραπάνω σταθερές μπορούν να συνδυαστούν στο όρισμα της glutinitdisplaymode με τη χρήση τελεστών OR, υπό την προϋπόθεση βέβαια ότι εκφράζουν διαφορετικές ιδιότητες. Π.χ. για τη χρήση του χρωματικού μοντέλου RGB και την εφαρμογή διπλής ενταμίευσης, δίνουμε την εντολή glutinitdisplaymode(glut_double GLUT_RGB); Στην περίπτωση που δεν δίνεται εντολή glutinitdisplaymode στον κώδικα, η OpenGL θεωρεί ως προκαθορισμένη κατάσταση τη χρήση του χρωματικού μοντέλου RGB και την τεχνική της απλής ενταμίευσης.

glutcreatewindow int glutcreatewindow(char *name); H παραπάνω συνάρτηση δημιουργεί ένα window με μοναδικό όνομα για το σύστημα το ονόμα που περάσαμε σαν ορίσμα.

glutmainloop void glutmainloop(void); Με την βοήθεια της συνάρτησης glutmainloop μπαίνουμε στον κύκλο διαχείρισης γεγονότων (event processing loop) της GLUT. Η συνάρτηση πρέπει να κληθεί τουλάχιστον 1 φόρα σε ένα GLUT πρόγραμμα και δεν επιστρέφει ποτε...

OpenGL Primitives Οταν λέμε primitives εννοούμε διάφορες γεωμετρικές οντότητες οπως points,lines,triangles κ.α. Η OpenGL έχει πολλούς μηχανισμούς για την διαχείρηση των primitives οπώς VertexPointers,VBO(Vertex Buffer Objects) κ.α.

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

Θεμελιώδη σχήματα στην OpenGL

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

Εντολή glflush γ

Βιβλιογραφία 1. Zhigang Xiang, Roy A. Plastock, Schaum's outline of computer graphics, McGraw-Hill Professional, 2000, ISBN:0071357815 2. Κατερίνα Παπαδοπούλου, Εισαγωγή στην OpenGL Βασικά Γεωμετρικά Σχήματα Παράλληλη (ορθογραφική) προβολή, Παν. Πειραιώς 3. Πασχάλης Ράπτης, Γραφικά Υπολογιστών: OpenGL, ΤΕΙ Θεσσαλονίκης 4. Πασχάλης Ράπτης, Γραφικά Υπολογιστών: Βασικά Μθηματικά, ΤΕΙ Θεσσαλονίκης 5. Κ. Νταλούκας, Βασικές Αρχές Σχεδίασης στην OpenGL, Παν.Θεσσαλίας