Upload
nitza
View
65
Download
0
Embed Size (px)
DESCRIPTION
Εισαγωγή στο OpenGL. Graphics API v.s. Application API. Graphics API Λογισμικό για χειρισμό υλικού γραφικών . Παρέχει τις συναρτήσεις χαμηλού επιπέδου για απευθείας πρόσβαση στο υλικό. OpenGL / Direct3D Application API Λογισμικό υψηλού επιπέδου για ανάπτυξη εφαρμογών - PowerPoint PPT Presentation
Citation preview
Εισαγωγή στο OpenGL
1
Graphics API v.s. Application API
Graphics API– Λογισμικό για χειρισμό υλικού γραφικών.– Παρέχει τις συναρτήσεις χαμηλού επιπέδου
για απευθείας πρόσβαση στο υλικό.• OpenGL / Direct3D
Application API– Λογισμικό υψηλού επιπέδου για ανάπτυξη
εφαρμογών• Game Engine, VR tools…
2
Τι κάνει το OpenGL
– Σχεδιάζει πρωταρχικά σχήματα (σημείο, γραμμή, πολύγωνο)
– Λειτουργίες πινάκων– Διαγράφει κρυμμένες επιφάνειες– Φωτεινότητα και σκίαση– Texture mapping– Λειτουργίες με Pixel– GPU υπολογισμούς.
3
OpenGL διαδικασία
4
OpenGL εντολές
Command Buffer
Μετασχηματισμός και Φωτισμός
Rasterization
Frame Buffer
pixel λειτουργίες
OpenGL Διαδικασία
5
Vertex Data
Pixel Data
Display List
Evaluators
Vertex Operations
and Primitive Assembly
Pixel Operations
Rasterization
Texture Assembly
Fragment Operations
Frame Buffer
frame buffers
Ο buffer είναι περιοχή μνήμης στο υλικό για συγκεκριμένο σκοπό.
Ένα OpenGL σύστημα μπορεί να χειριστεί τέσσερεις buffers:– Buffer χρώματος– Buffer βάθους (Z-Buffer)– Buffer σχεδίου– Buffer συγκέντρωσης
6
GLUT (OpenGL Utility Toolkit)
Ένα παραθυρικό σύστημα ανεξάρτητων εργαλείων που καλύπτει την πολυπλοκότητα των διαφορετικών ΑΡΙ σύστημα παραθύρων. Παρέχει τις ακόλουθες λειτουργίες:– Αρχικοποίηση και δημιουργία παράθυρου– Χειρισμό παραθύρων και γεγονότα εισόδου– Σχέδιο πρωταρχικών τρισδιάστατων
αντικείμενων– Τρέξιμο προγράμματος
7
Που βρίσκουμε το 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
8
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();
}
9
1o εργαστήριοvoid main(void)
{
glutInitDisplayMode(GLUT_SINGLE | GLUT_RGB);
glutCreateWindow("Sample");
glutDisplayFunc(GL_display);
glutReshapeFunc(GL_reshape);
glutMainLoop();
}
10
1o εργαστήριο
11
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
12