Εισαγωγή στο OpenGL
Graphics API v.s. Application API Λογισμικό για χειρισμό υλικού γραφικών. Παρέχει τις συναρτήσεις χαμηλού επιπέδου για απευθείας πρόσβαση στο υλικό. OpenGL / Direct3D Application API Λογισμικό υψηλού επιπέδου για ανάπτυξη εφαρμογών Game Engine, VR tools…
Τι κάνει το OpenGL Σχεδιάζει πρωταρχικά σχήματα (σημείο, γραμμή, πολύγωνο) Λειτουργίες πινάκων Διαγράφει κρυμμένες επιφάνειες Φωτεινότητα και σκίαση Texture mapping Λειτουργίες με Pixel GPU υπολογισμούς.
Μετασχηματισμός και Φωτισμός OpenGL διαδικασία OpenGL εντολές Command Buffer Μετασχηματισμός και Φωτισμός Rasterization pixel λειτουργίες Frame Buffer
Vertex Operations and Primitive Assembly OpenGL Διαδικασία Vertex Operations and Primitive Assembly Vertex Data Evaluators Fragment Operations Display List Frame Buffer Rasterization Texture Assembly Pixel Data Pixel Operations
frame buffers Ο buffer είναι περιοχή μνήμης στο υλικό για συγκεκριμένο σκοπό. Ένα OpenGL σύστημα μπορεί να χειριστεί τέσσερεις buffers: Buffer χρώματος Buffer βάθους (Z-Buffer) Buffer σχεδίου Buffer συγκέντρωσης
GLUT (OpenGL Utility Toolkit) Ένα παραθυρικό σύστημα ανεξάρτητων εργαλείων που καλύπτει την πολυπλοκότητα των διαφορετικών ΑΡΙ σύστημα παραθύρων. Παρέχει τις ακόλουθες λειτουργίες: Αρχικοποίηση και δημιουργία παράθυρου Χειρισμό παραθύρων και γεγονότα εισόδου Σχέδιο πρωταρχικών τρισδιάστατων αντικείμενων Τρέξιμο προγράμματος
Tan-Chi Ho, CGGM Lab., Dep. of CSIE, NCTU Που βρίσκουμε το GLUT Win32: http://www.xmission.com/~nate/glut.html Linux: http://www.mesa3d.org/ Resources: http://www.opengl.org/resources/libraries/glut.html Tan-Chi Ho, CGGM Lab., Dep. of CSIE, NCTU
1o εργαστήριο #include <GL/glut.h> void GL_display() { glClearColor(0.0, 0.0, 0.0, 0.0); glClear(GL_COLOR_BUFFER_BIT); glColor3f(1.0, 1.0, 1.0); glutSolidCube(1.0); glFlush(); } void GL_reshape(GLsizei w, GLsizei h) glViewport(0, 0, w, h); glMatrixMode(GL_PROJECTION); glLoadIdentity(); glOrtho(-2.0f, 2.0f, -2.0f, 2.0f, -2.0f, 2.0f); glMatrixMode(GL_MODELVIEW);
1o εργαστήριο void main(void) { glutInitDisplayMode(GLUT_SINGLE | GLUT_RGB); glutCreateWindow("Sample"); glutDisplayFunc(GL_display); glutReshapeFunc(GL_reshape); glutMainLoop(); }
1o εργαστήριο
Links Web OpenGL Useful Sites http://www.opengl.org http://oss.sgi.com/projects/ogl-sample/registry/ Useful Sites NeHe’s OpenGL Tutorials NVidia’s developer web