Εισαγωγή στο OpenGL

Preview:

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

Recommended