Προγραμματισμός με χρήση της βιβλιοθήκης opengl. Βιβλιοθήκη γραφικών Opengl

Αυτο 22.06.2019
Επισκόπηση προγράμματος Η έκδοση υπολογιστή του Microsoft Excel Viewer θα επιτρέψει...

Chercher ΑυτοΑντικαταστάθηκε στο OpenGL τυπικούς τύπουςσε άλλες πλατφόρμες. Κατ 'αρχήν, δεν υπάρχει τίποτα δύσκολο να θυμηθούμε αυτούς τους τύπους και τις έννοιές τους.

Για παράδειγμα, ο τύπος GLint αντιστοιχεί στο τυπικό int:

typedef intΛάμψη;

παρόμοιος:

typedef ανυπόγραφο int GLuint; typedef float GLfloat; typedef διπλό GLdouble; typedef void GLvoid;

Αυτοί οι τύποι δηλώνονται στο GL.h. Τα ονόματα όλων αυτών των τύπων ξεκινούν με GL. Συνιστάται η χρήση αυτών των τύπων με λειτουργίες OpenGL.

Λειτουργίες OpenGL

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

Για να αποφευχθεί η σύγχυση στα ονόματα συναρτήσεων, έχουμε εισαγάγει αρκετές συμβάσεις (κανόνες) με τις οποίες δημιουργείται το όνομα μιας συνάρτησης OpenGL.

Πρώτον, όλα τα ονόματα συναρτήσεων OpenGL ξεκινούν με το πρόθεμα gl. Για παράδειγμα,

GlBegin();
glEng();

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

GlCommon_part_of_function_name[n],

όπου n είναι ο αριθμός των παραμέτρων, ο τύπος είναι ο τύπος των παραμέτρων.

Για παράδειγμα:

glVertex2d(1 ,0 , 0 ,5 ); // 2d σημαίνει: 2 παράμετροι τύπου GLdouble glVertex3f(1,0 f, 0,5 f, 0,0 f); // 3f σημαίνει: 3 παράμετροι GLfloat glColor3ub(127, 0, 255); // 3ub σημαίνει: 3 παράμετροι τύπου GLubyte

Ο παρακάτω πίνακας δείχνει τη σημασία των συντομογραφιών για τον τύπο:

εγώΛάμψη
UIGluint
φάGLfloat
ρεGL διπλό
μικρόGLshort
μαςGLushort
σιGLbyte
ubGLubyte
vπαράταξη

Σε διάφορες τεκμηρίωση του OpenGL, για να μην απαριθμούνται όλες οι λειτουργίες μιας οικογένειας, συνηθίζεται να γράφετε μόνο το όνομα του κοινού μέρους όλων των λειτουργιών της οικογένειας και να βάζετε έναν αστερίσκο "*" στο τέλος. Για παράδειγμα, οι συναρτήσεις που καθορίζουν τις συντεταγμένες των κορυφών γράφονται ως εξής:

GlVertex*

Περισσότερες πληροφορίες για το OpenGL

Οι εντολές OpenGL ερμηνεύονται από το μοντέλο πελάτη/διακομιστή.

Ο κώδικας εφαρμογής (πελάτης) εκδίδει εντολές που ερμηνεύονται και επεξεργάζονται.

Το OpenGL (διακομιστής) μπορεί ή όχι να λειτουργεί στον υπολογιστή ως πελάτης. Ένας διακομιστής μπορεί να περιέχει πολλαπλά περιβάλλοντα OpenGL. Ο πελάτης μπορεί να συνδεθεί σε οποιοδήποτε από αυτά τα περιβάλλοντα.

Το σύστημα παραθύρων εκχωρεί ένα buffer πλαισίου. Καθορίζει σε ποιο μέρος του framebuffer του μοντέλου μπορεί να προσπελαστεί δεδομένου χρόνουγια το OpenGL και ειδοποιεί την OpenGL πώς είναι δομημένα αυτά τα κομμάτια. Επομένως, το OpenGL δεν διαθέτει εντολές που ρυθμίζουν το framebuffer ή αρχικοποιούν το OpenGL.

Πρόσθετες βιβλιοθήκες

Εκτός από τις λειτουργίες και τις λειτουργίες OpenGL που παρέχονται από το λειτουργικό σύστημα, χρησιμοποιούνται συχνά πρόσθετες βιβλιοθήκες για την εργασία με το OpenGL.

Οι βιβλιοθήκες δεν εισάγουν νέες δυνατότητες στο ίδιο το OpenGL. Σκοπός τους είναι να απλοποιήσουν τον κώδικα. Οι βιβλιοθήκες εξαλείφουν την ανάγκη για προγραμματιστές να γράφουν συναρτήσεις που χρησιμοποιούνται συχνά.

Συνιστάται η χρήση πρόσθετων βιβλιοθηκών με εξαιρετική προσοχή. Ενδέχεται να προκύψουν προβλήματα κατά τη μεταφορά του κωδικού σας σε άλλη πλατφόρμα. Συνήθως χρησιμοποιούνται για μικρά και δοκιμαστικά προγράμματα. Σε μεγάλα έργα, αυτές οι βιβλιοθήκες εγκαταλείπονται, αφήνοντας την προτίμηση στην καθαρή OpenGL.

Οι πιο γνωστές βιβλιοθήκες:

OpenGL Utility Library (glu)

Η βιβλιοθήκη βοηθητικού προγράμματος glu παρέχει συναρτήσεις που λειτουργούν με πίνακες, συστήματα συντεταγμένων, καμπύλες και Επιφάνειες NURBSκαι τα λοιπά.

Αυτή η βιβλιοθήκη συνοδεύεται σχεδόν από όλες τις υλοποιήσεις OpenGL, ιδιαίτερα το MS Visual C++.

Για να το χρησιμοποιήσετε, πρέπει αρχείο προέλευσηςσυμπεριλάβετε το αρχείο κεφαλίδας glu.h:

#συμπεριλαμβάνω

και συμπεριλάβετε τη στατική βιβλιοθήκη glu32.lib στο έργο σας για σύνδεση.

Τα ονόματα των συναρτήσεων σε αυτήν τη βιβλιοθήκη βοηθητικού προγράμματος ξεκινούν με glu, για παράδειγμα,

GluPerspective();

OpenGL Auxiliary Library (glaux)

Η βοηθητική βιβλιοθήκη glaux περιέχει λειτουργίες που δημιουργούν απλά τρισδιάστατα γεωμετρικά αντικείμενα, όπως σφαίρα, κύβο, παραλληλεπίπεδο, κύλινδρο, κώνο κ.λπ., λειτουργίες που φορτώνουν εικόνες από αρχεία, συναρτήσεις που λειτουργούν με το παράθυρο εξόδου γραφικών κ.λπ.

Αυτή η βιβλιοθήκη χρησιμοποιείται λιγότερο συχνά και η λειτουργικότητα δεν περιλαμβάνεται στο MSDN. Τα αρχεία για εργασία με τη βιβλιοθήκη παρέχονται επίσης με το MS Visual C++.

Για να το χρησιμοποιήσετε, πρέπει να συμπεριλάβετε το αρχείο κεφαλίδας glaux.h στο αρχείο προέλευσης:

#συμπεριλαμβάνω

και συμπεριλάβετε τη στατική βιβλιοθήκη glaux.lib στο έργο σας για σύνδεση.

Τα ονόματα των συναρτήσεων σε αυτήν τη βιβλιοθήκη βοηθητικού προγράμματος ξεκινούν με aux, για παράδειγμα,

AuxSolidCube();

OpenGL Utility Toolkit (GLUT)

Ανεξάρτητο παράθυρο λειτουργικό σύστημαεργαλείο δημιουργίας Προγράμματα OpenGL. Παρέχει απλή υλοποίησηδιεπαφή παραθύρου. Αυτή η βιβλιοθήκη απελευθερώνει εφαρμογές από προετοιμασίες αρχικοποίησης, μπορεί να δημιουργήσει γεωμετρικά αντικείμενα κ.λπ.

Για να το χρησιμοποιήσετε, πρέπει να συμπεριλάβετε το αρχείο κεφαλίδας glut.h στο αρχείο προέλευσης και να συμπεριλάβετε τη στατική βιβλιοθήκη glut32.lib στο έργο σας για σύνδεση.

Επιπλέον, πρέπει να έχετε τη βιβλιοθήκη δυναμικών συνδέσμων glut32.dll.

Για να εξοικειωθείτε με το OpenGL, πρέπει να ξεκινήσετε με το γεγονός ότι το OpenGL είναι προσδιορισμός. Εκείνοι. Το OpenGL ορίζει απλώς ένα σύνολο απαιτούμενων δυνατοτήτων. Η υλοποίηση εξαρτάται από τη συγκεκριμένη πλατφόρμα.
Το OpenGL είναι ένα πολυπλατφορμικό API γραφικών ανεξάρτητο από τη γλώσσα. Το OpenGL είναι ένα API χαμηλού επιπέδου, επομένως είναι καλή ιδέα να έχετε κάποια κατανόηση των γραφικών γενικά και κάποια βασική γραμμική άλγεβρα για να δουλέψετε μαζί του.

Ονομασία

Ας πούμε λίγα λόγια για την ονομασία συναρτήσεων στο OpenGL. Πρώτον, τα ονόματα όλων των συναρτήσεων που παρέχονται απευθείας από το OpenGL ξεκινούν με το πρόθεμα gl. Δεύτερον, οι συναρτήσεις που καθορίζουν μια συγκεκριμένη παράμετρο που χαρακτηρίζεται από ένα σύνολο αριθμών (για παράδειγμα, μια συντεταγμένη ή ένα χρώμα) έχουν ένα επίθημα της μορφής [αριθμός παραμέτρων + τύπος παραμέτρων + αναπαράσταση παραμέτρων].
  • Αριθμός παραμέτρων - υποδεικνύει τον αριθμό των αποδεκτών παραμέτρων. Λαμβάνει τις ακόλουθες τιμές: 1 , 2 , 3 , 4
  • Τύπος παραμέτρου - υποδεικνύει τον τύπο των παραμέτρων που γίνονται αποδεκτοί. Είναι δυνατές οι ακόλουθες τιμές: σι, μικρό, εγώ, φά, ρε, ub, μας, UI. Εκείνοι. byte (char σε C, ακέραιος αριθμός 8 bit), short (ακέραιος αριθμός 16 bit), int (ακέραιος αριθμός 32 bit), float (αριθμός κινητής υποδιαστολής), διπλός (αριθμός κινητής υποδιαστολής διπλής ακρίβειας), ανυπόγραφο byte, ανυπόγραφο σύντομο, ανυπόγραφο int (οι τρεις τελευταίοι είναι ανυπόγραφοι ακέραιοι)
  • Αναπαράσταση παραμέτρων - υποδεικνύει με ποια μορφή μεταβιβάζονται οι παράμετροι εάν κάθε αριθμός είναι μεμονωμένος, τότε δεν γράφεται τίποτα εάν οι παράμετροι μεταβιβάζονται ως πίνακας, τότε προσαρτάται ένα γράμμα στο όνομα της συνάρτησης v
Παράδειγμα: glVertex3ivκαθορίζει τη συντεταγμένη κορυφής, που αποτελείται από τρεις ακέραιους αριθμούς που μεταβιβάζονται ως δείκτης σε έναν πίνακα.

Γραφικά

Όλα τα γραφικά αντικείμενα στο OpenGL είναι μια συλλογή σημείων, γραμμών και πολυγώνων. Υπάρχουν 10 διαφορετικά πρωτόγονα με τα οποία είναι χτισμένα όλα τα αντικείμενα. Τόσο δισδιάστατο όσο και τρισδιάστατο. Όλα τα πρωτόγονα, με τη σειρά τους, προσδιορίζονται από σημεία - κορυφές.
  • GL_POINTS- κάθε κορυφή ορίζει ένα σημείο
  • GL_LINES- κάθε μεμονωμένο ζεύγος κορυφών ορίζει μια γραμμή
  • GL_LINE_STRIP- κάθε ζεύγος κορυφών ορίζει μια γραμμή (δηλαδή το τέλος της προηγούμενης γραμμής είναι η αρχή της επόμενης)
  • GL_LINE_LOOP- παρόμοια με την προηγούμενη, με τη διαφορά ότι η τελευταία κορυφή συνδέεται με την πρώτη και προκύπτει ένα κλειστό σχήμα
  • GL_TRIANGLES- κάθε μεμονωμένη τριάδα κορυφών ορίζει ένα τρίγωνο
  • GL_TRIANGLE_STRIP- κάθε επόμενη κορυφή ορίζει ένα τρίγωνο μαζί με τα δύο προηγούμενα (αποδεικνύεται ταινίααπό τρίγωνα)
  • GL_TRIANGLE_FAN- κάθε τρίγωνο ορίζεται από την πρώτη κορυφή και τα επόμενα ζεύγη (δηλαδή τα τρίγωνα είναι χτισμένα γύρω από την πρώτη κορυφή, σχηματίζοντας κάτι παρόμοιο με ένα διάφραγμα)
  • GL_QUADS- κάθε τέσσερις κορυφές σχηματίζουν ένα τετράπλευρο
  • GL_QUAD_STRIP- το καθένα επόμενο ζευγάρικορυφές σχηματίζει ένα τετράπλευρο μαζί με ένα ζεύγος προηγούμενων
  • GL_POLYGON- ορίζει ένα πολύγωνο με τον αριθμό των γωνιών ίσο με τον αριθμό των δοσμένων κορυφών
Για να ορίσετε ένα πρωτόγονο, χρησιμοποιήστε την κατασκευή glBegin(primitive_type)...glEnd(). Οι κορυφές καθορίζονται glVertex*. Οι κορυφές ρυθμίζονται αριστερόστροφα. Οι συντεταγμένες ορίζονται από την επάνω αριστερή γωνία του παραθύρου. Το χρώμα κορυφής ορίζεται από την εντολή glColor*. Το χρώμα καθορίζεται ως RGB ή RGBA. Η εντολή glColor* ενεργεί σε όλες τις κορυφές που έρχονται μετά από αυτήν έως ότου εμφανιστεί μια άλλη εντολή glColor* ή σε όλες τις κορυφές εάν δεν υπάρχουν άλλες εντολές glColor*.
Εδώ είναι ο κώδικας που σχεδιάζει ένα τετράγωνο με κορυφές διαφορετικού χρώματος:
  1. glΈναρξη (GL_QUADS) ;
  2. glVertex2i(250, 450);
  3. glVertex2i(250, 150);
  4. glVertex2i(550, 150);
  5. glVertex2i(550, 450);
  6. glEnd() ;

Βασικά προγράμματα OpenGL

Για εργασία ανεξάρτητη από πλατφόρμα με παράθυρα, μπορείτε να χρησιμοποιήσετε το . Το GLUT διευκολύνει την εργασία με το OpenGL.
Για να αρχικοποιήσετε το GLUT στην αρχή του προγράμματος πρέπει να καλέσετε glutInit(&argc, argv). Για να ρυθμίσετε τη λειτουργία εμφάνισης, καλέστε glutInitDisplayMode(λειτουργία), όπου η λειτουργία μπορεί να λάβει τις ακόλουθες τιμές:
  • GLUT_RGBA- περιλαμβάνει χρώμα τεσσάρων συστατικών (προεπιλογή)
  • GLUT_RGB- ίδιο με το GLUT_RGBA
  • GLUT_INDEX- περιλαμβάνει χρώμα με ευρετήριο
  • GLUT_DOUBLE- ενεργοποιεί το buffer διπλής οθόνης
  • GLUT_SINGLE- ενεργοποιεί την προσωρινή μνήμη μιας οθόνης (προεπιλογή)
  • GLUT_DEPTH- ενεργοποιεί το Z-buffer (depth buffer)
  • GLUT_STENCIL- περιλαμβάνει buffer στένσιλ
  • GLUT_ACCUM- ενεργοποιεί το buffer συσσώρευσης
  • GLUT_ALPHA- επιτρέπει την ανάμειξη άλφα (διαφάνεια)
  • GLUT_MULTISAMPLE- ενεργοποιεί την πολλαπλή δειγματοληψία (anti-aliasing)
  • GLUT_STEREO- περιλαμβάνει στερεοφωνική εικόνα
Για να επιλέξετε πολλές λειτουργίες ταυτόχρονα, χρησιμοποιήστε το bitwise Ή "|". Για παράδειγμα: το glutInitDisplayMode(GLUT_DOUBLE|GLUT_RGBA|GLUT_DEPTH) ενεργοποιεί τη διπλή αποθήκευση, την προσωρινή μνήμη Z και το τετραπλό χρώμα. Τα μεγέθη των παραθύρων έχουν οριστεί glutInitWindowSize (πλάτος, ύψος). Η θέση του είναι glutInitWindowPosition(x, y). Δημιουργείται ένα παράθυρο από τη συνάρτηση glutCreateWindow(window_title).
Το GLUT εφαρμόζει έναν μηχανισμό που βασίζεται σε γεγονότα. Εκείνοι. Υπάρχει ένας κύριος βρόχος που ξεκινά μετά την προετοιμασία και όλα τα δηλωμένα συμβάντα έχουν ήδη υποβληθεί σε επεξεργασία σε αυτόν. Για παράδειγμα, πατώντας ένα πλήκτρο στο πληκτρολόγιο ή μετακινώντας τον κέρσορα του ποντικιού κ.λπ. Μπορείτε να καταχωρήσετε συναρτήσεις χειριστή συμβάντων χρησιμοποιώντας τις ακόλουθες εντολές:
  • void glutDisplayFunc (void (*func) (void))- ορίζει τη λειτουργία σχεδίασης μιας εικόνας
  • void glutReshapeFunc (void (*func) (int πλάτος, int ύψος))- ορίζει τη λειτουργία για την επεξεργασία της αλλαγής μεγέθους παραθύρου
  • void glutVisibilityFunc (void (*func)(int state))- ορίζει τη λειτουργία για την επεξεργασία αλλαγών στην κατάσταση ορατότητας παραθύρου
  • void glutKeyboardFunc (void (*func)(unsigned char key, int x, int y))- ορίζει τη λειτουργία για την επεξεργασία των πλήκτρων του πληκτρολογίου (μόνο εκείνων που δημιουργούν χαρακτήρες ascii)
  • void glutSpecialFunc (void (*func)(int key, int x, int y))- ορίζει τη λειτουργία για την επεξεργασία πιέσεων πλήκτρων πληκτρολογίου (αυτά που δεν δημιουργούν χαρακτήρες ascii)
  • void glutIdleFunc (void (*func) (void))- καθορίζει μια συνάρτηση που καλείται όταν δεν υπάρχουν άλλα συμβάντα
  • void glutMouseFunc (void (*func) (κουμπί int, κατάσταση int, int x, int y))- ορίζει μια συνάρτηση που επεξεργάζεται εντολές του ποντικιού
  • void glutMotionFunc (void (*func)(int x, int y))- ορίζει μια λειτουργία που επεξεργάζεται την κίνηση του δρομέα του ποντικιού όταν κρατάτε πατημένο οποιοδήποτε κουμπί του ποντικιού
  • void glutPassiveMotionFunc (void (*func)(int x, int y))- ορίζει μια λειτουργία που επεξεργάζεται την κίνηση του δρομέα του ποντικιού όταν δεν πατιέται κανένα κουμπί του ποντικιού
  • void glutEntryFunc (void (*func)(int state))- ορίζει μια συνάρτηση που χειρίζεται την κίνηση του δρομέα έξω από το παράθυρο και την επιστροφή του
  • void glutTimerFunc (ανυπόγραφο int msecs, void (*func)(int value), τιμή)- καθορίζει μια λειτουργία που καλείται σε ένα χρονόμετρο
Στη συνέχεια, μπορείτε να εκτελέσετε τον κύριο βρόχο glutMainLoop().

Πρώτο πρόγραμμα

Τώρα γνωρίζουμε τα βασικά της εργασίας με το OpenGL. Μπορείτε να γράψετε ένα απλό πρόγραμμαγια την εμπέδωση της γνώσης.
Ας ξεκινήσουμε συμπεριλαμβάνοντας το αρχείο κεφαλίδας GLUT:

Τώρα ξέρουμε ήδη τι να γράψουμε κυρίως. Ας καταχωρήσουμε δύο χειριστές: για τη σχεδίαση των περιεχομένων του παραθύρου και για την επεξεργασία της αλλαγής μεγέθους. Αυτοί οι δύο χειριστές χρησιμοποιούνται ουσιαστικά σε οποιοδήποτε πρόγραμμα που χρησιμοποιεί OpenGL και GLUT.
  1. int main (int argc, char * argv)
  2. glutInit(& argc, argv) ;
  3. glutInitDisplayMode(GLUT_DOUBLE| GLUT_RGBA) ; /*Ενεργοποίηση διπλής προσωρινής αποθήκευσης και χρώματος τεσσάρων συστατικών*/
  4. glutInitWindowSize(800, 600) ;
  5. glutCreateWindow("OpenGL μάθημα 1" );
  6. glutReshapeFunc(reshape) ;
  7. glutDisplayFunc(display) ;
  8. glutMainLoop() ;
  9. επιστροφή 0 ;

Τώρα πρέπει να γράψουμε μια συνάρτηση χειριστή για αλλαγή μεγέθους παραθύρου. Ας ορίσουμε την περιοχή εξόδου εικόνας να είναι το μέγεθος ολόκληρου του παραθύρου χρησιμοποιώντας την εντολή glViewport(x, y, πλάτος, ύψος). Στη συνέχεια, φορτώστε τη μήτρα προβολής glMatrixMode(GL_PROJECTION), αντικαταστήστε το με μονάδα glLoadIdentity()και ορίστε την ορθογώνια προβολή. Και τέλος, φορτώστε τον πίνακα προβολής μοντέλου glMatrixMode(GL_MODELVIEW)και αντικαταστήστε το με μια μονάδα.
Ως αποτέλεσμα παίρνουμε:
  1. αναμόρφωση κενού (int w, int h)
  2. glViewport(0 , 0 , w, h) ;
  3. glMatrixMode(GL_PROJECTION) ;
  4. glLoadIdentity() ;
  5. gluOrtho2D(0, w, 0, h);
  6. glMatrixMode(GL_MODELVIEW) ;
  7. glLoadIdentity() ;

Το μόνο που μένει είναι να γράψουμε μια συνάρτηση για τη σχεδίαση των περιεχομένων του παραθύρου. Θα σχεδιάσουμε το τετράγωνο που έδωσα παραπάνω ως παράδειγμα. Θα πρέπει να προσθέσετε πολύ λίγο κώδικα. Πρώτα, πριν σχεδιάσετε, πρέπει να καθαρίσετε διάφορα buffer χρησιμοποιώντας glClear (λειτουργία). Χρησιμοποιείται με τον ίδιο τρόπο όπως το glutInitDisplayMode. Πιθανές τιμές:
  • GL_COLOR_BUFFER_BIT- για να καθαρίσετε το buffer χρώματος
  • GL_DEPTH_BUFFER_BIT- για να καθαρίσετε το buffer βάθους
  • GL_ACCUM_BUFFER_BIT- για εκκαθάριση του buffer συσσώρευσης
  • GL_STENCIL_BUFFER_BIT- για τον καθαρισμό του buffer της οθόνης
Στην περίπτωσή μας, χρειάζεται μόνο να καθαρίσουμε το buffer χρώματος, γιατί Δεν χρησιμοποιούμε άλλους. Δεύτερον, μετά τη σχεδίαση, πρέπει να ζητήσετε από την OpenGL να αλλάξει τα buffer της οθόνης χρησιμοποιώντας glutSwapBuffers(), επειδή έχουμε ενεργοποιημένη τη διπλή αποθήκευση. Τα πάντα σχεδιάζονται σε ένα buffer κρυμμένο από τον χρήστη και στη συνέχεια τα buffer αλλάζουν. Αυτό γίνεται για την απόκτηση ομαλή κινούμενη εικόνακαι για να μην υπάρχει αποτέλεσμα είδος σκολοπάκοςοθόνη.
Παίρνουμε:
  1. void display()
  2. glClear(GL_COLOR_BUFFER_BIT) ;
  3. glBegin(GL_QUADS) ;
  4. glColor3f(1.0, 1.0, 1.0);
  5. glVertex2i(250, 450);
  6. glColor3f(0.0, 0.0, 1.0);
  7. glVertex2i(250, 150);
  8. glColor3f(0.0, 1.0, 0.0);
  9. glVertex2i(550, 150);
  10. glColor3f(1.0, 0.0, 0.0);
  11. glVertex2i(550, 450);
  12. glEnd() ;
  13. glutSwapBuffers() ;

Κατώτατη γραμμή

Ολοι! Μπορεί να συνταχθεί. Θα πρέπει να μοιάζει κάπως έτσι:

Η υποβολή της καλής σας δουλειάς στη βάση γνώσεων είναι εύκολη. Χρησιμοποιήστε την παρακάτω φόρμα

επιτυχίαστον ιστότοπο">

Φοιτητές, μεταπτυχιακοί φοιτητές, νέοι επιστήμονες που χρησιμοποιούν τη βάση γνώσεων στις σπουδές και την εργασία τους θα σας είναι πολύ ευγνώμονες.

Δημοσιεύτηκε στις http://www.allbest.ru/

Το OpenGL είναι διεπαφή λογισμικούστο υλικό γραφικών. Αυτή η διεπαφή αποτελείται από περίπου 250 ατομικές ομάδες(περίπου 200 εντολές στο ίδιο το OpenGL και άλλες 50 στη βιβλιοθήκη του βοηθητικού προγράμματος) που χρησιμοποιούνται για τον καθορισμό αντικειμένων και λειτουργιών που πρέπει να εκτελεστούν για την απόκτηση διαδραστική εφαρμογή, δουλεύοντας με 3D γραφικά. γραφική διεπαφή προγραμματισμού opengl

Η βιβλιοθήκη OpenGL έχει σχεδιαστεί ως μια γενικευμένη, ανεξάρτητη διεπαφή που μπορεί να υλοποιηθεί για διάφορους μηχανήματα υπολογιστών. Για το λόγο αυτό, το ίδιο το OpenGL δεν περιλαμβάνει λειτουργίες για τη δημιουργία παραθύρων ή για τη λήψη εισαγωγή χρήστη; Για αυτές τις λειτουργίες πρέπει να χρησιμοποιήσετε τα εργαλεία του λειτουργικού συστήματος στο οποίο εργάζεστε. Για τους ίδιους λόγους, το OpenGL δεν διαθέτει λειτουργίες υψηλού επιπέδου για την περιγραφή μοντέλων τρισδιάστατα αντικείμενα. Τέτοιες εντολές θα σας επιτρέψουν να περιγράψετε σχετικά πολύπλοκα σχήματα, όπως αυτοκίνητα, μέρη ανθρώπινου σώματος ή μόρια. Όταν χρησιμοποιείτε τη βιβλιοθήκη OpenGL, πρέπει να δημιουργήσετε τα απαραίτητα μοντέλα χρησιμοποιώντας μικρό σετγεωμετρικά πρωτόγονα - σημεία, γραμμές και πολύγωνα (πολύγωνα).

Ωστόσο, μια βιβλιοθήκη που παρέχει τις περιγραφόμενες δυνατότητες μπορεί να κατασκευαστεί πάνω από το OpenGL. Η OpenGL Utility Library (GLU) παρέχει πολλά εργαλεία μοντελοποίησης, όπως τετραγωνικές επιφάνειες, καμπύλες και επιφάνειες NURBS. GLU- στάνταρ μέροςοποιαδήποτε υλοποίηση OpenGL. Υπάρχουν επίσης βιβλιοθήκες υψηλότερου επιπέδου, όπως το Fahrenheit Scene Graph (FSG), οι οποίες είναι κατασκευασμένες με χρησιμοποιώντας OpenGLκαι διανέμονται χωριστά για πολλές από τις υλοποιήσεις του.

Η ακόλουθη λίστα περιγράφει εν συντομία τις βασικές λειτουργίες γραφικών που εκτελεί το OpenGL για την εμφάνιση εικόνων στην οθόνη.

1. Κατασκευάζει σχήματα από γεωμετρικά πρωτόγονα, δημιουργώντας μια μαθηματική περιγραφή αντικειμένων (τα πρωτόγονα στο OpenGL είναι σημεία, γραμμές, πολύγωνα, bitmaps και εικόνες).

2. Τοποθετεί αντικείμενα σε τρισδιάστατο χώρο και επιλέγει ένα σημείο παρατήρησης για να προβάλει τη σύνθεση που προκύπτει.

3. Υπολογίζει τα χρώματα για όλα τα αντικείμενα. Τα χρώματα μπορούν να καθοριστούν από την εφαρμογή, που προέρχονται από συνθήκες φωτισμού, που υπολογίζονται χρησιμοποιώντας υφές που εφαρμόζονται σε αντικείμενα ή οποιονδήποτε συνδυασμό αυτών των παραγόντων.

4. Μετατρέπει μια μαθηματική περιγραφή αντικειμένων και τις σχετικές πληροφορίες χρώματος σε pixel στην οθόνη. Αυτή η διαδικασία ονομάζεται ραστεροποίηση (ή ραστεροποίηση).

Κατά τη διάρκεια όλων αυτών των σταδίων, το OpenGL μπορεί να εκτελέσει άλλες λειτουργίες, όπως αφαίρεση τμημάτων αντικειμένων που είναι κρυμμένα από άλλα αντικείμενα. Επιπλέον, μετά την ραστεροποίηση της σκηνής αλλά προτού αποδοθεί στην οθόνη, μπορείτε να εκτελέσετε ορισμένες λειτουργίες στα δεδομένα pixel εάν είναι απαραίτητο.

Γενική διαδικασία εργασίας με Βιβλιοθήκη OpenGlείναι:

1. Αρχικοποιήστε το παράθυρο (λάβετε την περιοχή για την εμφάνιση της εικόνας)

2. Εγκαταστήστε την κάμερα

3. Ανάψτε το φως (αν χρειάζεται)

4. Στον βρόχο, ξεκινήστε να σχεδιάζετε πρωταρχικά (σημεία, γραμμές, πολύγωνα), καθαρίζοντας πρώτα το παράθυρο από το προηγούμενο σχέδιο.

Αρχικοποίηση του παραθύρου.

Εάν εργάζεστε σε Visual C++, τότε το παράθυρο δημιουργείται χρησιμοποιώντας τις συναρτήσεις

auxInitDisplayMode

Ο κύριος βρόχος σχεδίασης πλαισίου δημιουργείται στη συνάρτηση Draw και καταχωρείται χρησιμοποιώντας τη συνάρτηση

auxMainLoop(Draw);

static void CALLBACK Draw(void) // δημιουργήθηκε από χρήστη

// θέση του παραθύρου OpenGL στην οθόνη

auxInitPosition(100, 100, windowW, windowH);

// ρύθμιση βασικών παραμέτρων Το OpenGL λειτουργεί

// λειτουργία χρώματος RGB | ενεργοποίηση του buffer Z για ταξινόμηση βάθους

// |Διπλή προσωρινή αποθήκευση

auxInitDisplayMode(AUX_RGB | AUX_DEPTH | AUX_DOUBLE);

// αρχικοποιήστε το παράθυρο OpenGL με τίτλο

if(auxInitWindow("Παράδειγμα1") ==GL_FALSE) auxQuit();

// καταχωρήστε μια συνάρτηση που καλείται κατά την επανασχεδίαση

// και ξεκινήστε τον βρόχο συμβάντος

// Draw() - συνάρτηση χρήστη

auxMainLoop(Draw);

Εάν εργάζεστε στο Borland C++ Builder, τότε για να αρχικοποιήσετε το παράθυρο, πρέπει να αποκτήσετε το Handle ( μοναδικό αναγνωριστικό Windows windows) του παραθύρου στο οποίο θα σχεδιάσετε. Η λαβή είναι διαθέσιμη για όλα τα παράθυρα εφαρμογών κορυφαίο επίπεδοκαι τα περισσότερα παιδικά παράθυρα. Στα παραδείγματά μας θα σχεδιάσουμε ένα θυγατρικό παράθυρο StaticText.

Στη συνέχεια πρέπει να δημιουργήσουμε ένα πλαίσιο σχεδίασης (πλαίσιο συσκευής) και να ορίσουμε τη μορφή του. Για να γίνει αυτό, αρχικοποιείται η δομή PIXELFORMATDESCRIPTOR (μορφή περιγραφής pixel). Αυτό το πλαίσιο περιγράφει εάν χρειαζόμαστε υποστήριξη buffer βάθους, διπλή αποθήκευσηκαι τα λοιπά.).

Στη συνέχεια, ακολουθήστε τις λειτουργίες:

ΕπιλέξτεPixelFormat

Δημιουργείται ένα πλαίσιο σχεδίασης OpenGL:

wglCreateContext(hdc);

Και στη συνέχεια συνδέονται τα περιβάλλοντα OpenGL και Windows:

wglMakeCurrent(hdc, hrc)

void __fastcall TFormMain::FormCreate(TObject *Sender)

// πάρτε το HANDLE του παραθύρου StaticText

στατικό HWND Handle=a->Handle;

// δημιουργήστε μια λαβή θέσης σχεδίασης για το παράθυρο StaticText

hdc = GetDC(Handle);

// ορίστε τις κατάλληλες ρυθμίσεις περιβάλλοντος συσκευής

PIXELFORMATDESCRIPTOR pfd = (

sizeof(PIXELFORMATDESCRIPTOR),

PFD_DRAW_TO_WINDOW | PFD_SUPPORT_OPENGL | PFD_DOUBLEBUFFER,

// επιλέξτε την κατάλληλη μορφή

PixelFormat = ChoosePixelFormat(hdc, &pfd);

SetPixelFormat(hdc, PixelFormat, &pfd);

// δημιουργήστε ένα περιβάλλον συσκευής για το OpenGL

// χρησιμοποιώντας τη λαβή θέσης σχεδίασης

hrc = wglCreateContext(hdc);

ShowMessage(":-)~ hrc == NULL");

if(wglMakeCurrent(hdc, hrc) == false)

ShowMessage("Δεν ήταν δυνατή η δημιουργία ρεύματος");

Εγκατάσταση κάμερας

Από προεπιλογή, η κάμερα είναι τοποθετημένη στην αρχή (0, 0, 0), στραμμένη κατά μήκος της κατεύθυνσης του αρνητικού άξονα z και το διάνυσμα κατεύθυνσης προς τα επάνω είναι (0, 1, 0).

Για να εγκαταστήσετε την κάμερα, είναι βολικό να χρησιμοποιήσετε τη λειτουργία gluLookAt(). Αν και έχει 9 παραμέτρους, είναι εύκολα κατανοητές. Χωρίζονται σε τρεις παραμέτρους, αντίστοιχα για τρία σημεία: Eye (Eye), Center, Up.

Το μάτι καθορίζει το σημείο από το οποίο κοιτάμε, το Κέντρο καθορίζει πού κοιτάμε και το διάνυσμα της κορυφής καθορίζει πού πρέπει να έχουμε την κορυφή (φανταστείτε έναν πιλότο σε ένα αεροπλάνο να πετάει με το κεφάλι κάτω). Είναι βολικό να περικλείονται διανύσματα σε κλάσεις με παρακαμφθείσες πράξεις.

gluLookAt(e.x,e.y,e.z, c.x,c.y,c.z, u.x,u.y,u.z);

Ο κύριος βρόχος περιλαμβάνει τα ακόλουθα βήματα σχεδίασης πλαισίου:

1. Διαγραφή buffer από τη σχεδίαση της προηγούμενης εικόνας

2. Λειτουργίες σχεδίασης πρωτόγονων

3. Λειτουργίες για την ολοκλήρωση της σχεδίασης και την αναμονή απάντησης από την κάρτα βίντεο

4. Λειτουργίες για την αντιγραφή εικόνων από τη μνήμη στην οθόνη

Ο κύριος βρόχος δεν περιλαμβάνει χειρισμό συμβάντων, όπως πάτημα πλήκτρων και αλλαγή μεγέθους παραθύρου. Για την επεξεργασία συμβάντων, δημιουργούνται ξεχωριστές συναρτήσεις και επισυνάπτονται επιπλέον στην εφαρμογή.

Εάν εργάζεστε σε Visual C, τότε αυτό γίνεται χρησιμοποιώντας συναρτήσεις των οποίων τα πρωτότυπα περιγράφονται στο αρχείο glaux.h:

auxReshapeFunc()

Εάν εργάζεστε στο Borland C, τότε η επεξεργασία εκδηλώσεων πραγματοποιείται παραδοσιακά για όσους δημιουργούνται από αυτό περιβάλλον λογισμικούτρόπος: απλά επιλέγετε ένα στοιχείο (για παράδειγμα, Κουμπί1), δημιουργείτε έναν χειριστή (για παράδειγμα, ένα πάτημα πλήκτρων) και μέσα περιγράφετε το σώμα της συνάρτησης.

Σχεδιάζοντας πρωτόγονα

Η σχεδίαση πρωτόγονων γίνεται με τις εντολές glBegin() και glEnd().

Η σταθερά που μεταβιβάζεται στη συνάρτηση glBegin καθορίζει τον τύπο του αρχέγονου που θα σχεδιαστεί

Οι συντεταγμένες των σημείων καθορίζονται από ένα τρισδιάστατο χωρικό διάνυσμα. Τα χρώματα καθορίζονται από τρεις (RGB) ή τέσσερις (RGBA) παραμέτρους. Στο παράδειγμά μας, η τιμή του στοιχείου χρώματος κάθε χρώματος μπορεί να ποικίλει από 0 έως 1. Εάν έχετε συνηθίσει στην τιμή του στοιχείου χρώματος από 0 έως 255 (MsPaint), τότε χρησιμοποιήστε το glColor3ub(255,0,0 ) λειτουργία. Το επίθημα ub σημαίνει ανυπόγραφο byte.

Φωτισμός μέσα Γραφικά υπολογιστώνέχει 3 εξαρτήματα

Η ακτινοβολία υποβάθρου είναι φως που κατανέμεται τόσο από το περιβάλλον (αντικείμενα, τοίχοι κ.λπ.) που δεν μπορεί να προσδιοριστεί η κατεύθυνσή του - φαίνεται να προέρχεται από παντού. Λυχνία φως ημέραςέχει ένα μεγάλο στοιχείο φόντου, επειδή το μεγαλύτερο μέρος του φωτός που φτάνει στο μάτι σας αντανακλάται πρώτα από πολλές επιφάνειες. Ένα φως του δρόμου έχει μια μικρή συνιστώσα φόντου: το μεγαλύτερο μέρος του φωτός του έρχεται προς μία κατεύθυνση, και εφόσον είναι σε εξωτερικό χώρο, πολύ λίγο φως χτυπά το μάτι σας αφού αναπηδήσει από άλλα αντικείμενα. Όταν το φως του φόντου χτυπά μια επιφάνεια, κατανέμεται εξίσου προς όλες τις κατευθύνσεις.

Η διάχυτη συνιστώσα είναι το φως που προέρχεται από μία κατεύθυνση, επομένως φαίνεται πιο φωτεινό εάν προσκρούσει σε μια επιφάνεια σε ορθή γωνία και εμφανίζεται αμυδρό εάν την ακουμπήσει μόνο για λίγο. Ωστόσο, όταν προσκρούει σε μια επιφάνεια, κατανέμεται εξίσου προς όλες τις κατευθύνσεις, που σημαίνει ότι η φωτεινότητά του είναι η ίδια ανεξάρτητα από την πλευρά που κοιτάξετε την επιφάνεια. Είναι πιθανό ότι οποιοδήποτε φως προέρχεται από μια συγκεκριμένη κατεύθυνση ή θέση έχει μια διάχυτη συνιστώσα.

Το κατοπτρικό φως προέρχεται από μια συγκεκριμένη κατεύθυνση και ανακλάται από μια επιφάνεια σε μια συγκεκριμένη κατεύθυνση. Όταν αντανακλάται μια καλά εστιασμένη ακτίνα λέιζερσχεδόν το 100 τοις εκατό προέρχεται από έναν καθρέφτη υψηλής ποιότητας εικόνα καθρέφτη. Το γυαλιστερό μέταλλο ή πλαστικό έχει ένα υψηλό κατοπτρικό συστατικό, αλλά ένα κομμάτι χαλί ή ένα βελούδινο παιχνίδι δεν έχει. Μπορείτε να σκεφτείτε την κερδοσκοπία ως το πόσο γυαλιστερό εμφανίζεται ένα υλικό.

Εκτός από τα χρώματα του φόντου, τα διάχυτα και τα κατοπτρικά χρώματα, τα υλικά μπορούν επίσης να έχουν ένα εκπεμπόμενο χρώμα που προσομοιώνει το φως που προέρχεται από το ίδιο το αντικείμενο. Στο μοντέλο φωτισμού OpenGL, το εξερχόμενο επιφανειακό φως προσθέτει ένταση σε ένα αντικείμενο, αλλά δεν επηρεάζεται από οποιεσδήποτε πηγές φωτός και δεν παράγει επιπλέον φως στη σκηνή στο σύνολό της.

Αν και η πηγή φωτός εκπέμπει μια ενιαία κατανομή συχνότητας, τα στοιχεία φόντου, διάχυσης και κατοπτρισμού μπορεί να είναι διαφορετικά. Για παράδειγμα, αν το δωμάτιό σας έχει κόκκινους τοίχους και λευκό φως, τότε αυτό το φως, που αντανακλάται από τους τοίχους, θα είναι περισσότερο κόκκινο παρά λευκό (παρά το γεγονός ότι το φως που πέφτει στον τοίχο είναι λευκό). Το OpenGL σάς επιτρέπει να ορίσετε τις τιμές του κόκκινου, του πράσινου και του μπλε ανεξάρτητα για κάθε φωτεινό στοιχείο.

Οι εντολές που χρησιμοποιούνται για τη ρύθμιση του υλικού είναι:

// περιπτώσεις για φως και υλικό

// Ενεργοποίηση πηγής φωτός με αριθμό μηδέν

glEnable(GL_LIGHT0);

// ορίστε τη θέση και τα στοιχεία χρώματος της πηγής φωτός

glLightfv(GL_LIGHT0, GL_POSITION, LL.pos);

glLightfv(GL_LIGHT0, GL_AMBIENT, LL.amb);

glLightfv(GL_LIGHT0, GL_DIFFUSE, LL.dif);

glLightfv(GL_LIGHT0, GL_SPECULAR, LL.spec);

// ενεργοποίηση λειτουργίας σκίασης/φωτισμού

glEnable(GL_LIGHTING);

// ορίστε τις παραμέτρους του υλικού του αντικειμένου

// στα μπροστινά πρόσωπα --- GL_FRONT για τα πίσω GL_BACK και για τα δύο - GL_FRONT_AND_BACK

// δεύτερη παράμετρος - ποιο συστατικό του υλικού

// πιθανά GL_AMBIENT, GL_DIFFUSE, GL_SPECULAR, GL_EMISSION, GL_SHININESS

// αντιστοίχως ΚΑΤΑΝΟΜΕΝΑ, ΑΝΑΠΤΥΛΑΣΜΕΝΟ, ΚΑΘΡΕΦΤΗΣ, ΑΥΤΟΕΚΠΟΜΠΗ, κατοπτρική ένδειξη έκλαμψης

glMaterialfv(GL_FRONT,GL_AMBIENT,MM.amb);

glMaterialfv(GL_FRONT,GL_DIFFUSE,MM.dif);

glMaterialfv(GL_FRONT,GL_SPECULAR,MM.spec);

glMaterialf(GL_FRONT,GL_SHININESS,MM.pos);

glNormal3f(0,0,1);

glBegin(GL_QUADS);

για(i=-10; i<20;i++)

for(j=-10;j<20;j++)

glVertex3f(i,j,0);

glVertex3f(i+1,j,0);

glVertex3f(i+1,j+1,0);

glVertex3f(i,j+1,0);

Σύναψη

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

Λόγω της ελάχιστης χρήσης πολύπλοκων δομών για την αναπαράσταση τρισδιάστατων αντικειμένων, είναι δυνατό να χρησιμοποιηθεί το OpenGL ως βάση για τη δημιουργία βιβλιοθηκών για τη διαχείριση δομημένων αντικειμένων. Παραδείγματα τέτοιων βιβλιοθηκών περιλαμβάνουν αντικειμενοστραφή πακέτα εργαλείων που χρησιμοποιούνται για την απεικόνιση και τη μοντελοποίηση πολύπλοκων γραφικών δομών

Δημοσιεύτηκε στο Allbest.ru

Παρόμοια έγγραφα

    Κωδικός OpenGL. Σύνταξη εντολής OpenGL. Το OpenGL ως κρατική μηχανή. Σωλήνας απόδοσης OpenGL. Βιβλιοθήκες που σχετίζονται με το OpenGL. Βιβλιοθήκη OpenGL. Συμπεριλαμβανόμενα αρχεία. GLUT, μια εργαλειοθήκη βοηθητικών προγραμμάτων βιβλιοθήκης OpenGL.

    εργασία μαθήματος, προστέθηκε 06/01/2004

    Προγραμματισμός εφαρμογής με χρήση της βιβλιοθήκης OpenGL και συναρτήσεων σχεδίασης γεωμετρικών αντικειμένων. Ανάπτυξη διαδικασίας οπτικοποίησης τρισδιάστατης σκηνής και διεπαφής χρήστη. Λογική δομή και λειτουργική αποσύνθεση του έργου.

    εργασία μαθήματος, προστέθηκε 23/06/2011

    Εξοικείωση με τη διεπαφή, τα κύρια χαρακτηριστικά και τα πλεονεκτήματα της χρήσης του προγράμματος OpenGL - μια δημοφιλής βιβλιοθήκη για εργασία με γραφικά 2D και 3D. Εξέταση του σκοπού, των βασικών στοιχείων και των κανόνων αρχικοποίησης της μηχανής λογισμικού DirectX.

    παρουσίαση, προστέθηκε 14/08/2013

    Δημιουργία προγράμματος σε C++ χρησιμοποιώντας βιβλιοθήκες γραφικών OpenGL στο Microsoft Visual Studio. Κατασκευή δυναμικής εικόνας τρισδιάστατου μοντέλου του αντικειμένου «Oil platform». Λογική δομή και λειτουργική αποσύνθεση του έργου.

    εργασία μαθήματος, προστέθηκε 23/06/2011

    Η ουσία του προγραμματισμού χρησιμοποιώντας τη βιβλιοθήκη OpenGL, ο σκοπός, η αρχιτεκτονική, τα πλεονεκτήματα και οι βασικές δυνατότητες. Ανάπτυξη εφαρμογής για την κατασκευή δυναμικής εικόνας τρισδιάστατου μοντέλου του αντικειμένου «Υπολογιστής», εγχειρίδιο χρήσης.

    εργασία μαθήματος, προστέθηκε 22/06/2011

    Εργασία με χρώμα χρησιμοποιώντας τη βιβλιοθήκη γραφικών OpenGL. Πρόγραμμα που εμφανίζει ένα τετράγωνο με μεταβαλλόμενο χρώμα ανάλογα με τις αλλαγές στις διαβαθμίσεις (R, G, B), ένα τρίγωνο του οποίου οι κορυφές έχουν διαφορετικά χρώματα, μια ορθογώνια λωρίδα σε μορφή φάσματος.

    δοκιμή, προστέθηκε στις 21/01/2011

    Σκοπός και πρότυπα υλοποίησης του OpenGL για Windows, σειρά σύνδεσης της βιβλιοθήκης γραφικών. Βασικές συναρτήσεις και σύνταξη εντολών. Σχεδίαση πρωτόγονων, ειδών και μετασχηματισμών συγγενών. Μοντελοποίηση δισδιάστατων γραφικών αντικειμένων και κινούμενων εικόνων.

    εργαστηριακές εργασίες, προστέθηκε 07/04/2009

    Βασικά στοιχεία προγραμματισμού με χρήση της βιβλιοθήκης OpenGL. Εφαρμογή για την κατασκευή δυναμικής εικόνας μοντέλου του αντικειμένου Bathyscaphe: ανάπτυξη διαδικασίας οπτικοποίησης τρισδιάστατου διαγράμματος, διεπαφής χρήστη και υποσυστήματος διαχείρισης συμβάντων.

    εργασία μαθήματος, προστέθηκε 26/06/2011

    Κατανοήστε αυτή τη σφαίρα των γραφικών vikoristannya trivimirnoy. Περιγραφή των δυνατοτήτων της βιβλιοθήκης OpenGL. Μια λεπτομερής περιγραφή της διεπαφής προγραμματισμού Borland C++, μια λίστα προγραμμάτων που καταδεικνύουν τις δυνατότητές της. Έργο Rozrakhunok vitrat na vikonannya.

    διατριβή, προστέθηκε 24/06/2015

    Ανάπτυξη συστατικού για μαθηματικούς υπολογισμούς (πράξεις σε πίνακες) με χρήση τεχνολογίας OpenGL (πρόσθεση, αφαίρεση, πολλαπλασιασμός, μεταφορά, ορίζουσα, αντίστροφος πίνακας). Βασικές δεξιότητες εργασίας με τεχνολογία στο περιβάλλον .Net.

Αποφασίσατε να μάθετε OpenGL, αλλά ξέρετε από πού να ξεκινήσετε; Κάναμε μια επιλογή υλικών.

Τι είναι το OpenGL

Το OpenGL (ανοιχτή βιβλιοθήκη γραφικών) είναι ένα από τα πιο δημοφιλή πρότυπα γραφικών για εργασία με γραφικά. Τα προγράμματα που γράφτηκαν με τη βοήθειά του μπορούν να μεταφερθούν σχεδόν σε οποιαδήποτε πλατφόρμα, αποκτώντας το ίδιο αποτέλεσμα. Το OpenGL σας επιτρέπει να μην γράφετε προγράμματα για το υλικό, αλλά να επωφεληθείτε από τις υπάρχουσες εξελίξεις. Το OpenGL αναπτύσσεται από τη Silicon Graphics, σε συνεργασία με άλλους τεχνολογικούς κολοσσούς.

Με όρους προγραμματισμού, το OpenGL είναι μια διεπαφή προγραμματισμού για γραφικά ράστερ, όπως επιταχυντές γραφικών. Περιλαμβάνει περίπου 150 διαφορετικές εντολές με τις οποίες ο προγραμματιστής μπορεί να ορίσει διάφορα αντικείμενα και να αποδώσει.

Υλικό Μελέτης

Φροντιστήρια

Διαδικτυακά μαθήματα

  • Lynda - "OpenGL Course";
  • Πανεπιστήμιο του Τόκιο - «Διαδραστικά Γραφικά Υπολογιστών»
  • Πανεπιστήμιο του Σαν Ντιέγκο - "Βασικές αρχές γραφικών υπολογιστών."

Βιβλία

Στα ρωσικά

1. D. Shreiner - OpenGL Redbook - λήψη;

Το βιβλίο είναι ο επίσημος οδηγός για την εκμάθηση του OpenGL. Οι τελευταίες εκδόσεις είναι σχεδόν εντελώς διαφορετικές από τις αρχικές εκδόσεις ο συγγραφέας τις ενημερώνει σύμφωνα με τις αλλαγές στις εκδόσεις. Σύμφωνα με εκατοντάδες ειδικούς που εργάζονται με το Open GL, αυτό το βιβλίο είναι το πρώτο πράγμα που πρέπει να πάρει όποιος θέλει να μάθει την τεχνολογία.

2. D. Wolf - Open GL 4. Shader language. Βιβλίο συνταγών (2015) - λήψη;

Αυτό το βιβλίο καλύπτει ολόκληρο το φάσμα των τεχνικών προγραμματισμού GLSL, από τους βασικούς σκιαδιστές - σκίαστρες κορυφών και θραυσμάτων - έως τους σκιαδιστές γεωμετρίας, υπολογισμού και τεσσαλοποίησης. Αφού το διαβάσετε, θα μπορείτε να χρησιμοποιήσετε τη GPU για να λύσετε μια μεγάλη ποικιλία προβλημάτων.

3. D. Ginsburg - OpenGL ES 3.0. Οδηγός προγραμματιστή (2014) - αγορά;

Σε αυτό το βιβλίο, ο συγγραφέας εξετάζει ολόκληρο το API και τη γλώσσα για τη γραφή shaders. Θα βρείτε επίσης συμβουλές για τη βελτιστοποίηση της απόδοσης, τη μεγιστοποίηση της απόδοσης API και GPU και την πλήρη χρήση του OpenGL ES σε ένα ευρύ φάσμα εφαρμογών.

4. V. Porev - Computer graphics (2002) - λήψη;

Το βιβλίο συζητά τρόπους εργασίας με γραφικά υπολογιστή, κοινά προβλήματα και παρέχει παραδείγματα προγραμμάτων σε C++.

Στα αγγλικά

1. P. Shirley - Fundamentals of Computer Graphics (2009) - ;

Το βιβλίο προορίζεται να είναι μια εισαγωγή στα γραφικά υπολογιστών σε βασικό επίπεδο. Οι συγγραφείς καλύπτουν τα μαθηματικά θεμέλια των γραφικών υπολογιστών με έμφαση στον τρόπο εφαρμογής αυτών των θεμελίων για την ανάπτυξη αποτελεσματικού κώδικα.

2. E. Angel - Διαδραστικά γραφικά υπολογιστή - αγοράστε;

Αυτό το βιβλίο απευθύνεται σε όλους τους μαθητές που μελετούν σε βάθος την επιστήμη των υπολογιστών και τον προγραμματισμό. Τα κινούμενα σχέδια και τα γραφικά στον υπολογιστή δεν είναι τόσο δύσκολα όσο παλιά. Μετά τη δήλωσή του, ο συγγραφέας έγραψε το βιβλίο στην πιο κατανοητή γλώσσα.



Συνιστούμε να διαβάσετε

Κορυφή