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

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

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

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

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

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

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

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

Συσκευές εισόδου. Φυσικές συσκευές εισόδου Λογικές συσκευές εισόδου

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

Κεφάλαιο 4 ο Προβολές

Κεφάλαιο 2 ο Είσοδος/Έξοδος ιαχείριση γεγονότων - Αποκοπή στις δύο διαστάσεις

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

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

Κεφάλαιο 3ο Μετασχηµατισµοί συντεταγµένων

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

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

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

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

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

scanf() scanf() stdin scanf() printf() int float double %lf float

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

ΕΡΓΑΣΙΑ ΕΞΑΜΗΝΟΥ - ΜΕΡΟΣ Γ'

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

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

Βιβλιοθήκες Αφηρημένοι τύποι δεδομένων. Προγραμματισμός II 1

2 ο Εργαστήριο Αλληλεπίδραση και Animation

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

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

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

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

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

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

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

Επεξεργασία Αρχείων Κειµένου

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

Εισαγωγή στον Προγραµµατισµό. Πανεπιστήµιο Θεσσαλίας Τµήµα Ηλεκτρολόγων Μηχανικών και Μηχανικών Η/Υ

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

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

Αντικειµενοστρεφής Προγραµµατισµός

Μεταγλώττιση και σύνδεση πολλαπλών αρχείων κώδικα. Προγραμματισμός II 1

ΕΡΓΑΣΤΗΡΙΟ 6: Συναρτήσεις και Αναδρομή

2.1 Αντικειµενοστρεφής προγραµµατισµός

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

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

ιαχείριση Τηλεφωνικών Κλήσεων

BloodShed Dev C++ Οδηγίες Χρήσης (Συγγραφέας: Πάρις Πολύζος)

είκτες και Πίνακες (2)

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

Α. Ερωτήσεις Ανάπτυξης

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

Προγραμματισμός Υπολογιστών & Υπολογιστική Φυσική

Η-Υ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ. Εργαστήριο 1 Εισαγωγή στη C. Σοφία Μπαλτζή s.mpaltzi@di.uoa.gr

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

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

#include <stdlib.h> Α. [-128,127] Β. [-127,128] Γ. [-128,128]

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

Παράλληλη Επεξεργασία

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

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

Τι θα απαντούσατε αλήθεια στην ίδια ερώτηση για την περίπτωση της επόμενης εικόνας;

Α. unsigned int Β. double. Γ. int. unsigned char x = 1; x = x + x ; x = x * x ; x = x ^ x ; printf("%u\n", x); Β. unsigned char

Κεφάλαιο 7 ο Βασικές Έννοιες Προγραμματισμού (σελ )

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

ΕΥΣΤΑΘΙΟΥ ΑΓΓΕΛΙΚΗ ΣΦΑΕΛΟΣ ΙΩΑΝΝΗΣ

(programming interfaceή/και application programming interface API).

H ΓΛΩΣΣΑ C. Μάθηµα 1: Το Πρώτο µας Πρόγραµµα σε C. ηµήτρης Ψούνης

ΣΕΤ ΑΣΚΗΣΕΩΝ 2. Προθεσµία: 15/11/09, 23:59

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

Λύβας Χρήστος Αρχική επιµέλεια Πιτροπάκης Νικόλαος και Υφαντόπουλος Νικόλαος

Αριστείδης Παλιούρας Ανακαλύψτε το Scratch 2

ιπλωµατική Εργασία Ανάπτυξη Γραφικού Περιβάλλοντος για την απεικόνιση και διαχείριση τρισδιάστατων πλεγµάτων και επιφανειών

Γ) Χρήση Λογισμικού για την υλοποίηση πρακτικών εφαρμογών της Ασαφούς Λογικής

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

H ΓΛΩΣΣΑ C. Μάθηµα 7: Πίνακες. ηµήτρης Ψούνης

ΠΕΡΙΕΧΟΜΕΝΑ. Περιγραφή της αρχικής οθόνης κάθε τάξης α. Εικονίδια επιλογής θεµατικών ενοτήτων β. Εικονίδια διαφυγής...

Συναρτήσεις. Εισαγωγή

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

Κλάσεις και Αντικείµενα

Κεφάλαιο 3.1, : Συναρτήσεις I. (Διάλεξη 11)

Η Γλώσσα Προγραµµατισµού C++ (The C++ Programming Language) Ιστοσελίδα του µαθήµατος. Περιεχόµενα. ηµήτριος Κατσαρός, Ph.D. Κλάσεις.

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

ΠΛΗΡΟΦΟΡΙΚΗ Ι Ενότητα 3: Συναρτήσεις

Προγραμματισμός H/Y Ενότητα 1: Εισαγωγή. Επικ. Καθηγητής Συνδουκάς Δημήτριος Τμήμα Διοίκησης Επιχειρήσεων (Γρεβενά)

Πληροφορική 2. Γλώσσες Προγραμματισμού

αντίστοιχο γεγονός. Όταν όντως το κουμπί

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

Σχήµα 3.1: Εισαγωγή shift register σε βρόγχο for-loop.

ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ Η/Υ Ακαδημαϊκό έτος ΤΕΤΡΑΔΙΟ ΕΡΓΑΣΤΗΡΙΟΥ #3

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

ΚΕΦΑΛΑΙΟ 7 ο. Έτσι ο προγραµµατισµός µε τη ΓΛΩΣΣΑ εστιάζεται στην ανάπτυξη του αλγορίθµου και τη µετατροπή του σε σωστό πρόγραµµα.

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

Atlantis - Νέο user interface

ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ Η/Υ Ακαδημαϊκό έτος ΤΕΤΡΑΔΙΟ ΕΡΓΑΣΤΗΡΙΟΥ #2

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

Προηγμένοι Μικροεπεξεργαστές. Εργαστήριο 5 - Editor

2. Κάντε κλικ στο παράθυρο όψης Top για να το ενεργοποιήσετε, ώστε να σχεδιάσετε το πάτωµα του δωµατίου.

ΔΟΜΗΜΕΝΟΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ Κεφάλαιο 8 : H γλώσσα προγραµµατισµού Pascal

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

Οδηγίες Χρήσεως Ψηφιακού Αποθετηρίου Ιστοριών στην Ελληνική Νοηματική Γλώσσα (ΕΝΓ)

ΜΟΝΤΕΛΟΠΟΙΗΣΗ ΕΞΟΧΙΚΗΣ ΚΑΤΟΙΚΙΑΣ ΜΕ ΧΡΗΣΗ OpenGL Περιστερίδου Καλλιόπη

Transcript:

Εισαγωγή στην OpenGL Ε.1 Τι είναι η OpenGL; Ένας νέος χρήστης θα υποθέσει ότι η OpenGL είναι µια βιβλιοθήκη σχεδίασης γραφικών. Ωστόσο, µε τον όρο OpenGL δεν αναφερόµαστε σε µια συγκεκριµένη βιβλιοθήκη αλλά σε ένα πρότυπο υλοποίησης βιβλιοθηκών σχεδίασης γραφικών. Εµπεριέχει δηλαδή το σύνολο των συναρτήσεων που πρέπει να υλοποιεί µία βιβλιοθήκη γραφικών προκειµένου να είναι συµβατή µε αυτό. Το πρότυπο αυτό λοιπόν καθορίζει µια προγραµµατιστική διεπιφάνεια (application programming interface ή API). Είναι προφανές ότι δεν υπάρχει περιορισµός ως προς τη γλώσσα προγραµµατισµού στην οποία θα υλοποιηθεί το πρότυπο της OpenGL. Ενδεικτικά αναφέρουµε την ύπαρξη βιβλιοθηκών σε γλώσσες προγραµµατισµού Fortran και C. Τα παραδείγµατα των Εργαστηριακών Μαθήµατων θα υλοποιηθούν σε γλώσσα προγραµατισµού C. Εφόσον µε το όρο OpenGL δεν αναφερόµαστε σε µια συγκεκριµένη βιβλιοθήκη αλλά σε ένα πρότυπο που ορίζει τη λειτουργικότητα µιας βιβλιοθήκης σχεδίασης, µπορούµε να ακολουθήσουµε τις ίδιες συµβάσεις σε όλες τις υλοποιήσεις του προτύπου (τις ίδιες εντολές). Αυτό σηµαίνει ότι, εάν βασιστούµε στο πρότυπο της OpenGL, ο κώδικας που συντάσσουµε είναι ανεξάρτητος πλατφόρµας (platform independent) και µπορει να εκτελεστεί σε ευρεία γκάµα περιβαλλόντων προγραµµατισµού χωρίς ριζική τροποποίηση της δοµής του. Οι βιβλιοθήκες των περισσότερων νέων µεταγλωττιστών εµπεριέχουν (ή υπάρχει η δυνατότητα να ενσωµατωθεί σε αυτούς) µια υλοποίηση της OpenGL. Ε.2 Βιβλιοθήκες Στην ενότητα αυτή περιγράφουµε τις κατηγορίες βιβλιοθηκών που συναντά κανείς σε υλοποιήσεις της OpenGL, καθώς και συµβάσεις σε ό,τι αφορά το συµβολισµό εντολών και σταθερών. α) Βασική βιβλιοθήκη (OpenGL core library): H βασική βιβλιοθήκη της OpenGL περιέχει τις κύριες εντολές σχεδίασης. Ολες οι εντολές της βιβλιοθήκης αυτής διακρίνονται από το πρόθεµα gl. Πολλές από τις συναρτήσεις της δέχονται προκαθορισµένα ορίσµατα (συµβολικές σταθερές) τα οποία έχουν οριστεί στη βιβλιοθήκη και αντιστοιχούν σε διάφορες παραµέτρους ή καταστάσεις λειτουργίας. Κατά σύµβαση, οι σταθερές αυτές ξεκινούν µε το πρόθεµα GL_. 7

β) OpenGL Utility Library (GLU): Περιλαµβάνει συναρτήσεις που εκτελούν σύνθετους αλγορίθµους όπως π.χ. τον καθορισµό µητρώων προβολής και το σχηµατισµό σύνθετων καµπυλών και επιφανειών. Κάθε υλοποίηση της OpenGL εµπεριέχει τη βιβλιοθήκη GLU. Όλες οι εντολές της βιβλιοθήκης GLU ξεκινούν µε το πρόθεµα glu. γ) OpenGL Utility Toolkit (GLUT): Όπως αναφέραµε το πρότυπο της OpenGL είναι ανεξάρτητο πλατφόρµας. Ωστόσο µια αυτονόητη απαίτηση ενός προγραµµατιστή είναι να έχει τη δυνατότητα να δει το αποτέλεσµα των προγραµµάτων του αλλά και να έχει δηλαδή τη δυνατότητα αλληλεπίδρασης µε αυτό. Χρειάζεται δηλαδή εντολές εισόδου-εξόδου. Ωστόσο οι εντολές αλληλεπίδρασης δεν είναι ανεξάρτητες πλατφόρµας και για το λόγο αυτό οι προγραµµατιστές σε OpenGL χρησιµοποιούν µία ακόµη βιβλιοθήκη που τους προσφέρει εντολές εισόδουεξόδου. Μία από τις βιβλιοθήκες που προσφέρει τη λειτουργικότητα αυτή είναι το OpenGL Utility Toolkit (GLUT). Η βιβλιοθήκη αυτή περιλαµβάνει εντολές απεικόνισης παραθύρων στην οθόνη, δηµιουργίας menus, διαχείρισης γεγονότων κλπ. Όλες οι εντολές της ξεκινούν µε το πρόθεµα glut. Ε.3 Ένα τυπικό πρόγραµµα Στην παράγραφο αυτή παρουσιάζουµε και περιγράφουµε συνοπτικά τη δοµή ενός τυπικού προγράµµατος που βασίζεται στο πρότυπο της OpenGL. #include <glut.h> void display() { glclearcolor(1,1,1,1); glclear(gl_color_buffer_bit); glbegin(gl_lines); glcolor3f(1,0,0); glvertex2i(20,20); glvertex2i(40,40); } glend(); glflush(); int main(int argc, char** argv) { glutinit(&argc,argv); glutinitwindowposition(50,50); glutinitwindowsize(640,480); glutinitdisplaymode(glut_single GLUT_RGB); glutcreatewindow("a sample OpenGL application"); glmatrixmode(gl_projection); gluortho2d(0,50,0,50); 8

glutdisplayfunc(display); glutmainloop(); return 0; } Ας ξεκινήσουµε µε την περιγραφή του κώδικα που περιέχεται στη συνάρτηση main. Αρχικά προσθέτουµε την κεφαλίδα του GLUT glut.h. Γενικά, για την ανάπτυξη ενός προγράµµατος που χρησιµοποιεί ρουτίνες της OpenGL, απαιτείται η προσθήκη των κεφαλίδων gl.h και glu.h, ενώ για χρήση του GLUT, απαιτείται η προσθήκη της glut.h. Ωστόσο, µε τη δήλωση της κεφαλίδας glut.h δηλώνονται αυτοµάτως και οι δύο προηγούµενες. Η συνάρτηση glutinit ενεργοποιεί τη βιβλιοθήκη GLUT και µέσω αυτής µπορούµε να περάσουµε παραµέτρους στην εφαρµογή µας από τη γραµµή εντολών του DOS. Η ρουτίνα glutinitwindowposition καθορίζει τη θέση στην οθόνη, στην οποία θα εµφανιστεί το παράθυρο της εφαρµογής (συντεταγµένη της άνω αριστερής κορυφής). Η εντολή glutinitwindowsize καθορίζει το πλάτος και ύψος του παραθύρου της εφαρµογής σε pixels. Η εντολή glutinitdisplaymode καθορίζει παραµέτρους σχετικές µε τους ενταµιευτές και το χρωµατικό µοντέλο που χρησιµοποιούνται κατά τη σχεδίαση. (Η τεχνική της διπλής ενταµίευσης χρησιµοποιείται κατά κόρον σε εφαρµογές κινουµένων γραφικών). Στο παράδειγµά µας χρησιµοποιούµε το χρωµατικό µοντέλο RGB (GLUT_RGB) και την εφαρµογή απλής ενταµίευσης (GLUT_SINGLE). Η εντολή glutcreatewindow εµφανίζει το παράθυρο της εφαρµογής στην οθόνη και του αποδίδει έναν τίτλο. Με την εντολή glmatrixmode(gluint mode) επιλέγουµε το µητρώο το οποίο επιθυµούµε να τροποποιήσουµε. (περισσότερα για τα µητρώα στις ενότητες «Μετασχηµατισµοί συντεταγµένων» και «Προβολές») Στο παράδειγµα, δίνοντας ως όρισµα τη σταθερά GL_PROJECTION επιλέγουµε το µητρώο προβολής, το οποίο καθορίζει τον τρόπο µε τον οποίο προβάλλεται η σκηνή στο επίπεδο του θεατή. Σε συνδυασµό µε την εντολή gluortho2d( xmin,xmax,ymin,ymax) διευκρινίζουµε ότι θα απεικονιστεί η παράλληλη προβολή της σκηνής στο επίπεδο ΧΥ (το οποίο, στο συγκεκριµένο παράδειγµα, ταυτίζεται µε το παράθυρο της εφαρµογής). Το περιεχόµενο του παραθύρου περιλαµβάνει όλα τα στοιχεία του σκηνικού που εκτείνονται µεταξύ των συντεταγµένων Χ=[-50,50] και Υ=[-50,50]. Ο θετικός άξονας X έχει φορά προς τα δεξιά και το θετικό τµήµα του άξονα Y έχει 9

φορά προς τα πάνω. Η εντολή glutdisplayfunc(void func()) εντάσσεται σε µια ειδική κατηγορία συναρτήσεων του GLUT, οι οποίες αποκαλούνται συναρτήσεις κλήσης (callback functions). Η συγκεκριµένη συνάρτηση δέχεται ως όρισµα µια συνάρτηση στην οποία εµπεριέχεται ο κώδικας σχεδίασης γραφικών. Η συνάρτηση αυτή εκτελείται κάθε φορά που η εφαρµογή διαπιστώσει ότι απαιτείται επανασχεδιασµός της σκηνής. Η συνάρτηση δεν επιστρέφει τιµή και δεν έχει ορίσµατα. Στο συγκεκριµένο παράδειγµα δίνουµε ως όρισµα τη συνάρτηση display(). Η εντολή glutmainloop() ενεργοποιεί τον κύκλο διαχείρισης γεγονότων (event processing loop). Στον κύκλο αυτό, η εφαρµογή αναµένει επ' άπειρον και ανταποκρίνεται σε γεγονότα, όπως λ.χ. στο πάτηµα ενός κουµπιού, στην αλλαγή του σκηνικού ή στην κίνηση του ποντικιού. Από το πρόθεµά της, παρατηρούµε ότι η συγκεκριµένη εντολή εµπεριέχεται στη βιβλιοθήκη GLUT, εφόσον το πρότυπο της OpenGL, ως πρότυπο ανεξάρτητο πλατφόρµας, δεν ορίζει διαδικασίες εισόδουεξόδου. Ας αναλύσουµε τώρα το περιεχόµενο της συνάρτησης display. Η εντολή glclearcolor() καθορίζει το χρώµα που χρησιµοποιείται κάθε φορά που εκτελείται εντολή καθαρισµού της οθόνης. Στην OpenGL το χρώµα του φόντου είναι µία µεταβλητή κατάστασης, η οποία διατηρεί την τιµή που της ανατέθηκε την τελευταία φορά. Το χρώµα καθορίζεται από τα βάρη του στο χρωµατικό µοντέλο RGB. Στο συγκεκριµένο παράδειγµα, χρησιµοποιείται το λευκό χρώµα. Η εντολή glclear() καθαρίζει ενταµιευτές (buffers), συγκεκριµένες περιοχές µνήµης του συστήµατος γραφικών (frame buffer). Η µηχανή γραφικών της OpenGL ορίζει ορισµένες κατηγορίες ενταµιευτών. Με την σταθερά GL_COLOR_BUFFER_BIT δίνουµε εντολή καθαρισµού του ενταµιευτή χρωµατικών τιµών (colour buffer). Αυτή περιέχει τις χρωµατικές τιµές των pixels που απεικονίζονται (ή πρόκειται να απεικονιστούν) στην οθόνη. Με την εντολή glcolor3f(float r, float g, float b) ορίζουµε το τρέχον χρώµα σχεδιάσης. Πρόκειται για µία ακόµη µεταβλητή κατάστασης που καθορίζει το χρώµα που χρησιµοποιείται για τη σχεδίαση γραφικών. Στην εντολή περνάµε ως ορίσµατα τις κανονικοποιηµένες ως προς τη µονάδα τιµές των συνιστωσών του κόκκινου, πράσινου και µπλέ χρώµατος. Στο παράδειγµα επιλέγουµε ως χρώµα σχεδιάσης το κόκκινο. Η εντολή glbegin(glenum MODE) δηλώνει την έναρξη ορισµού ενός ή περισσοτέρων 10

γεωµετρικών σχηµάτων. Αναλόγως του ορίσµατος, µπορεί να προσδιοριστεί µια ποικιλία σχηµάτων. Στο παράδειγµά µας, ορίζουµε ευθύγράµµα τµήµατα. Η εντολή glbegin εκτελείται πάντα σε συνδυασµό µε την εντολή glend() και η δεύτερη ορίζει τη λήξη της επιλεγόµενης ρύθµισης σχεδίασης. Η εντολή glvertex2i ορίζει σηµεία στο διδιάστατο χώρο. Εφόσον έχει προεπιλεγεί η κατάσταση σχεδίασης ευθυγράµµων τµηµάτων, τα σηµεία ορίζουν ανά ζεύγη τα ευθύγραµµα τµήµατα Το παραπάνω παράδειγµα σχεδιάζει ένα ευθύγραµµο τµήµα κόκκινου χρώµατος µε συνταταγµένες αρχής και τέλους (20,20) (40,40). Η εντολή glflush() εξαναγκάζει την εκτέλεση των εντολών που εκκρεµούν. Η εκτέλεση του κώδικα εµφανίζει το παράθυρο του παρακάτω σχήµατος. Σχ. 1 Παράθυρο του Παραδείγµατος 11

12