120 likes | 313 Views
Εισαγωγή στο OpenGL. Graphics API v.s. Application API. Graphics API Λογισμικό για χειρισμό υλικού γραφικών . Παρέχει τις συναρτήσεις χαμηλού επιπέδου για απευθείας πρόσβαση στο υλικό. OpenGL / Direct3D Application API Λογισμικό υψηλού επιπέδου για ανάπτυξη εφαρμογών
E N D
Graphics API v.s. Application API • Graphics API • Λογισμικό για χειρισμό υλικού γραφικών. • Παρέχει τις συναρτήσεις χαμηλού επιπέδου για απευθείας πρόσβαση στο υλικό. • OpenGL / Direct3D • Application API • Λογισμικό υψηλού επιπέδου για ανάπτυξη εφαρμογών • Game Engine, VR tools…
Τι κάνει το OpenGL • Σχεδιάζει πρωταρχικά σχήματα (σημείο, γραμμή, πολύγωνο) • Λειτουργίες πινάκων • Διαγράφει κρυμμένες επιφάνειες • Φωτεινότητα και σκίαση • Texture mapping • Λειτουργίες με Pixel • GPU υπολογισμούς.
OpenGL διαδικασία OpenGL εντολές Command Buffer Μετασχηματισμός και Φωτισμός Rasterization pixel λειτουργίες Frame Buffer
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) • Ένα παραθυρικό σύστημα ανεξάρτητων εργαλείων που καλύπτει την πολυπλοκότητα των διαφορετικών ΑΡΙ σύστημα παραθύρων. Παρέχει τις ακόλουθες λειτουργίες: • Αρχικοποίηση και δημιουργία παράθυρου • Χειρισμό παραθύρων και γεγονότα εισόδου • Σχέδιο πρωταρχικών τρισδιάστατων αντικείμενων • Τρέξιμο προγράμματος
Που βρίσκουμε το 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); glLoadIdentity(); }
1o εργαστήριο void main(void) { glutInitDisplayMode(GLUT_SINGLE | GLUT_RGB); glutCreateWindow("Sample"); glutDisplayFunc(GL_display); glutReshapeFunc(GL_reshape); glutMainLoop(); }
Links • Web • OpenGL • http://www.opengl.org • http://oss.sgi.com/projects/ogl-sample/registry/ • Useful Sites • NeHe’s OpenGL Tutorials • NVidia’s developer web