2 ο εργαστήριο

9
2 ο εργαστήριο 1

Upload: lars-byrd

Post on 01-Jan-2016

37 views

Category:

Documents


3 download

DESCRIPTION

2 ο εργαστήριο. OpenGL Σύνταξη Εντολών. Οι εντολές OpenGL χρησιμοποιούν το πρόθεμα gl και κεφαλαίο το πρώτο γράμμα κάθε λέξης . Οι OpenGL σταθερές αρχίζουν με GL_, και χρησιμοποιούνται κεφαλαία η ‘_’ για το διαχωρισμό των λέξεων. glVertex3f(…). OpenGL πρόθεμα. εντολή. - PowerPoint PPT Presentation

TRANSCRIPT

Page 1: 2 ο  εργαστήριο

2ο εργαστήριο

1

Page 2: 2 ο  εργαστήριο

OpenGL Σύνταξη Εντολών

Οι εντολές OpenGL χρησιμοποιούν το πρόθεμα gl και κεφαλαίο το πρώτο γράμμα κάθε λέξης.

Οι OpenGL σταθερές αρχίζουν με GL_, και χρησιμοποιούνται κεφαλαία η ‘_’ για το διαχωρισμό των λέξεων.

2

glVertex3f(…)

OpenGL πρόθεμα

εντολή πλήθος παραμέτρ.

τύπος παραμέτρ.

Page 3: 2 ο  εργαστήριο

Τύποι δεδομένων

3

OpenGL Type Internal representation C-Language TypeSuffix

GLbyte 8-bit integer signed char bGLshort 16-bit integer short sGLint, GLsizei 32-bit integer int or long iGLfloat 32-bit floating float fGLflampf pointerGLfouble 64-bit floating double dGLclampd pointerGlubyte 8-bit unsigned integer unsigned char ubGLuboolean 8-bit unsigned integer unsigned char ubGLushort 16-bit unsigned integer unsigned short

usGLuint, GLenum 32-bit unsigned integer unsigned long uiGLbitfield 32-bit unsigned integer

Page 4: 2 ο  εργαστήριο

Διαχείριση καταστάσεων

Η OpenGL είναι μηχανή καταστάσεων.– Η αλλαγή μιας κατάστασης παραμένει μέχρι

να ξανα-αλλαχθεί.– Η κάθε κατάσταση έχει μια δεδομένη τιμή.– Κάθε στιγμή μπορούμε να πάρουμε από το

σύστημα την τρέχουσα τιμή.

4

Page 5: 2 ο  εργαστήριο

Διαχείριση καταστάσεων

– glEnable(GLenum), glDisable(GLenum)• Ενεργοποίηση και απενεργοποίηση κάποιας

κατάστασης.– glIsEnabled(GLenum)

• Ερώτηση αν η κατάσταση είναι ενεργοποιημένη

– glGetBooleanv(), glGetIntegerv(), glGetFloatv(), glGetDoublev(), glGetPointerv()• Ζητείται η τρέχουσα τιμή

– OpenGL Programming Guide : Appendix B

5

Page 6: 2 ο  εργαστήριο

Αναπαράσταση Χρώματος

RGBA– 4 κανάλια: Red, Green, Blue, and Alpha.– Κάθε κανάλι παίρνει τιμές 0.0 ~ 1.0

• Τιμές εκτός των ορίων αποδίδονται στο 0.0 ή 1.0.

• Το Alpha χρησιμοποιείται στο συνδυασμό και τη διαφάνεια

• Π.x. glColor4f(0.0, 1.0, 0.0, 1.0); // Green

glColor4f(1.0, 1.0, 1.0, 1.0); // White

6

Page 7: 2 ο  εργαστήριο

Παράδειγμα#include <GL/glut.h>

void GL_display() {

glClearColor(0.0f, 0.0f, 0.0f, 0.0f);

glClear(GL_COLOR_BUFFER_BIT);

glBegin(GL_POLYGON);

glColor3f(1.0f, 1.0f, 1.0f);

glVertex3f (-1.0, -1.0, 0.0);

glColor3f(1.0f, 0.0f, 0.0f);

glVertex3f (1.0, -1.0, 0.0);

glColor3f(0.0f, 1.0f, 0.0f);

glVertex3f (1.0, 1.0, 0.0);

glColor3f(0.0f, 0.0f, 1.0f);

glVertex3f (-1.0, 1.0, 0.0);

glEnd();

glFlush();

}

7

Page 8: 2 ο  εργαστήριο

Παράδειγμα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();

}

void main(int argc, char** argv) {

glutInit(&argc, argv);

glutInitDisplayMode (GLUT_SINGLE | GLUT_RGB);

glutInitWindowSize (250, 250);

glutInitWindowPosition (100, 100);

glutCreateWindow("Drawing Sample");

glutDisplayFunc(GL_display);

glutReshapeFunc(GL_reshape);

glutMainLoop();

}

8

Page 9: 2 ο  εργαστήριο

Παράδειγμα

9