opengl

OpenGL : - PowerPoint PPT Presentation

OpenGL : OpenGL OpenGL


  1. Εισαγωγή στην OpenGL Περιεχό µ ενα εισαγωγικής ενότητας : • Γενικά χαρακτηριστικά της OpenGL • Βιβλιοθήκες που της OpenGL • Ένα τυπικό πρόγρα µµ α

  2. Τι είναι η OpenGL; • Η OpenGL δεν είναι µ ια συγκεκρι µ ένη βιβλιοθήκη γραφικών . • Είναι ένα πρότυπο που καθορίζει τις λειτουργίες που πρέπει να υποστηρίζει µ ία βιβλιοθήκη γραφικών ούτως ώστε να είναι συ µ βατή µ ε αυτήν . • Η OpenGL ορίζει µ ια προγρα µµ ατιστική διεπιφάνεια (Application Programming Interface) σχεδίασης γραφικών .

  3. Χαρακτηριστικά της OpenGL • Ο προγρα µµ ατιστής προγρα µµ ατίζει χρησι µ οποιώντας µ ια υλοποίηση της OpenGL. • Μια βιβλιοθήκη που υλοποιεί το πρότυπο της OpenGL µ πορεί να συνταχθεί σε οποιαδήποτε γλώσσα προγρα µµ ατισ µ ού ( η OpenGL είναι πρότυπο ανεξάρτητο πλατφόρ µ ας ). • Οι περισσότεροι µ εταγλωττιστές ε µ περιέχουν ή µ πορεί να ενσω µ ατωθεί σε αυτούς µ ία βιβλιοθήκη της OpenGL. • Στο παρόν σε µ ινάριο θα χρησι µ οποιηθεί υλοποίηση της OpenGL στη γλώσσα προγρα µµ ατισ µ ού C.

  4. Κατηγορίες βιβλιοθηκών της OpenGL •GL Core Library: Περιέχει βασικές εντολές σχεδίασης ( σχεδίαση βασικών γεω µ ετρικών σχη µ άτων , ορισ µ ός χρω µ άτων κλπ .) Ολες οι ρουτίνες της βιβλιοθήκης ξεκινούν µ ε το πρόθε µ α gl OpenGL Utility Library (GLU): Περιέχει πιο εξειδικευ µ ένες λειτουργίες ( Σχεδίαση σύνθετων επιφανειών , ορισ µ ός προβολών κλπ ) Ολες οι ρουτίνες της βιβλιοθήκης ξεκινούν µ ε το πρόθε µ α glu OpenGL Utility Toolkit (GLUT): Ρουτίνες εισόδου - εξόδου ( σχη µ ατισ µ ός παραθύρων , διαχείριση γεγονότων κλπ .). Κατ ’ εξαίρεση , οι εντολές της GLUT εξαρτώνται από την αρχιτεκτονική του συστή µ ατος . Ολες οι εντολές της βιβλιοθήκης ξεκινούν µ ε το πρόθε µ α glut.

  5. Ένα τυπικό παράδειγ µ α #include <glut.h> int main(int argc, char** argv){ void display() glutInit(&argc,argv); { glutInitWindowPosition(50,50); glClearColor(1,1,1,0); glutInitWindowSize(640,480); glClear(GL_COLOR_BUFFER_BIT); glutInitDisplayMode(GLUT_SINGLE|GL UT_RGB); glBegin(GL_LINES); glColor3f(1,0,0); glutCreateWindow("A sample OpenGL application"); glVertex2i(20,20); glVertex2i(40,40); glMatrixMode(GL_PROJECTION); glEnd(); gluOrtho2D(0,50,0,50); glFlush(); glutDisplayFunc(display); } glutMainLoop(); return 0;}

  6. Κεφαλίδες της OpenGL #include <glut.h>: Επιτρέπει τη χρήση βιβλιοθηκών της OpenGL #include <gl.h> = OpenGL Core Library #include <glu.h> = OpenGL Utility #include <glut.h> = OpenGL Core Library + OpenGL Utility + OpenGL Utility Toolkit

  7. Ανάλυση παράδειγ µ ατος (main) (1) int main(int argc, char** argv){ glutInit(): Ενεργοποιεί τη glutInit(&argc,argv); χρήση των εντολών της βιβλιοθήκης GLUT. glutInitWindowPosition(50,50); glutInitWindowSize(640,480); glutInitDisplayMode(GLUT_SINGLE|GL UT_RGB); glutCreateWindow("A sample OpenGL application"); glMatrixMode(GL_PROJECTION); gluOrtho2D(0,50,0,50); glutDisplayFunc(display); glutMainLoop(); return 0;}

  8. Ανάλυση παράδειγ µ ατος (main) (2) int main(int argc, char** argv){ glutInit(&argc,argv); glutInitWindowPosition(50,50); glutInitWindowPosition: ∆ηλώνει τη θέση στην οθόνη glutInitWindowSize(640,480); όπου θα ε µ φανιστεί το glutInitDisplayMode(GLUT_SINGLE|GL παράθυρο της εφαρ µ ογής UT_RGB); glutCreateWindow("A sample OpenGL application"); glMatrixMode(GL_PROJECTION); gluOrtho2D(0,50,0,50); glutDisplayFunc(display); glutMainLoop(); return 0;}

  9. Ανάλυση παράδειγ µ ατος (main) (3) int main(int argc, char** argv){ glutInit(&argc,argv); glutInitWindowPosition(50,50); glutInitWindowSize: glutInitWindowSize(640,480); Ορίζει τις διαστάσεις του glutInitDisplayMode(GLUT_SINGLE|GL παραθύρου της εφαρ µ ογής UT_RGB); σε pixels glutCreateWindow("A sample OpenGL application"); glMatrixMode(GL_PROJECTION); gluOrtho2D(0,50,0,50); glutDisplayFunc(display); glutMainLoop(); return 0;}

  10. Ανάλυση παράδειγ µ ατος (main) (4) int main(int argc, char** argv){ glutInit(&argc,argv); glutInitWindowPosition(50,50); glutInitWindowSize(640,480); glutInitDisplayMode(GLUT_SINGLE|GL glutInitDisplayMode: UT_RGB); Καθορίζει ρυθ µ ίσεις απεικόνισης (µ οντέλο glutCreateWindow("A sample OpenGL εντα µ ίευσης , χρω µ ατικό application"); µ οντέλο κ . λ . π .) glMatrixMode(GL_PROJECTION); gluOrtho2D(0,50,0,50); glutDisplayFunc(display); glutMainLoop(); return 0;}

  11. Ανάλυση παράδειγ µ ατος (main) (5) int main(int argc, char** argv){ glutInit(&argc,argv); glutInitWindowPosition(50,50); glutInitWindowSize(640,480); glutInitDisplayMode(GLUT_SINGLE|GL UT_RGB); glutCreateWindow: glutCreateWindow("A sample OpenGL Ε µ φανίζει το παράθυρο της application"); εφαρ µ ογής glMatrixMode(GL_PROJECTION); gluOrtho2D(0,50,0,50); glutDisplayFunc(display); glutMainLoop(); return 0;}

  12. Ανάλυση παράδειγ µ ατος (main) (6) int main(int argc, char** argv){ glutInit(&argc,argv); glutInitWindowPosition(50,50); glutInitWindowSize(640,480); glutInitDisplayMode(GLUT_SINGLE|GL UT_RGB); glutCreateWindow("A sample OpenGL application"); glMatrixMode(GL_PROJECTION); glMatrixMode: Επιλέγει τ o µ ητρώο που επιθυ µ ού µ ε να gluOrtho2D(0,50,0,50); τροποποιήσου µ ε ( προβολής ή glutDisplayFunc(display); µ ετασχη µ ατισ µ ού µ οντέλου ) glutMainLoop(); return 0;}

  13. Ανάλυση παράδειγ µ ατος (main) (7) int main(int argc, char** argv){ glutInit(&argc,argv); glutInitWindowPosition(50,50); glutInitWindowSize(640,480); glutInitDisplayMode(GLUT_SINGLE|GL UT_RGB); glutCreateWindow("A sample OpenGL application"); glMatrixMode(GL_PROJECTION); gluOrtho2D: ∆ήλωση gluOrtho2D(0,50,0,50); παράλληλης προβολής glutDisplayFunc(display); glutMainLoop(); return 0;}

  14. Ανάλυση παράδειγ µ ατος (main) (8) int main(int argc, char** argv){ glutInit(&argc,argv); glutInitWindowPosition(50,50); glutInitWindowSize(640,480); glutInitDisplayMode(GLUT_SINGLE|GL UT_RGB); glutCreateWindow("A sample OpenGL application"); glMatrixMode(GL_PROJECTION); glutDisplayFunc: gluOrtho2D(0,50,0,50); ∆ηλώνει τη συνάρτηση που θα εκτελείται κάθε glutDisplayFunc(display); φορά που απαιτείται glutMainLoop(); σχεδιασ µ ός της σκηνής return 0;}

  15. Ανάλυση παράδειγ µ ατος (main) (9) int main(int argc, char** argv){ glutInit(&argc,argv); glutInitWindowPosition(50,50); glutInitWindowSize(640,480); glutInitDisplayMode(GLUT_SINGLE|GL UT_RGB); glutCreateWindow("A sample OpenGL application"); glMatrixMode(GL_PROJECTION); gluOrtho2D(0,50,0,50); glutDisplayFunc(display); glutMainLoop: Ενεργοποιεί τον κύκλο glutMainLoop(); ακρόασης γεγονότων return 0;}

  16. Ανάλυση παραδείγ µ ατος (display) (1) void display() { glClearColor(1,1,1,0); glClearColor: glClear(GL_COLOR_BUFFER_BIT); ∆ήλωση χρώ µ ατος καθαρισ µ ού της glColor3f(1,0,0); οθόνης glBegin(GL_LINES); glVertex2i(20,20); glVertex2i(40,40); glEnd(); glFlush(); }

  17. Ανάλυση παραδείγ µ ατος (display) (2) void display() { glClearColor(1,1,1,0); glClear: Καθαρισ µ ός glClear(GL_COLOR_BUFFER_BIT); οθόνης ( καθαρισ µ ός ενός από τους εντα µ ιευτές του glColor3f(1,0,0); συστή µ ατος γραφικών ) glBegin(GL_LINES); glVertex2i(20,20); glVertex2i(40,40); glEnd(); glFlush(); }

  18. Ανάλυση παραδείγ µ ατος (display) (3) void display() { glClearColor(1,1,1,0); glClear(GL_COLOR_BUFFER_BIT); glColor3f(1,0,0); glColor*: Επιλογή χρώ µ ατος σχεδίασης glBegin(GL_LINES); glVertex2i(20,20); glVertex2i(40,40); glEnd(); glFlush(); }

Recommend


More recommend