Codice:
#include <GL/glut.h> // Header File For The GLUT Library
#include <GL/gl.h> // Header File For The OpenGL32 Library
#include <GL/glu.h> // Header File For The GLu32 Library
#include <unistd.h> // Header file for sleeping.
/* The number of our GLUT window */
int window;
void keyb(unsigned char key, int x, int y) {
printf("Tasto premuto: %c \n", key);
//Colori di sfondo
if(key == 'r') {
printf("Imposto il colore rosso... \n");
glClearColor(1.0f, 0.0f, 0.0f, 0.0f);
}
else if(key == 'g') {
printf("Imposto il colore verde... \n");
glClearColor(0.0f, 1.0f, 0.0f, 0.0f);
}
else if(key == 'b') {
printf("Imposto il colore blu... \n");
glClearColor(0.0f, 0.0f, 1.0f, 0.0f);
}
//Disegno: imposto il colore
else if(key == '1') {
printf("Applico il colore ... \n");
glClear(GL_COLOR_BUFFER_BIT);
}
//Disegno: faccio lo swap
else if(key == '2') {
printf("Swappo i buffers ... \n");
glutSwapBuffers();
}
}
int main(int argc, char **argv)
{
glutInit(&argc, argv);
glutInitDisplayMode(GLUT_RGB | GLUT_SINGLE);
glutInitWindowSize(640, 480);
glutInitWindowPosition(0, 0);
window = glutCreateWindow("My first opengl app...");
glutKeyboardFunc(&keyb);
glutMainLoop();
return 1;
}
Output:
Tasto premuto: g
Imposto il colore verde...
Tasto premuto: 1
Applico il colore ...
Tasto premuto: 2
Swappo i buffers ...
apatriarca ha scritto:Il problema è che tu non hai una superficie (ad esempio un triangolo), ma un vertice. Un vertice non definisce una superficie e quindi la direzione normale in quel punto non è ben definita. Il motivo per cui è utile/necessario definire una direzione normale per ogni vertice è per calcolare l'effetto che una sorgente luminosa ha sul quel punto. Nelle OpenGL "vecchie" infatti, l'effetto della luce viene calcolato solo nei vertici e poi viene interpolato all'interno di triangoli (o più generalmente poligoni).
(...)
Disegno un triangolo.
// glNormal(0, 0, 1); <------ Esempio di normale corretta
glNormal(1, 1, 1); <------ Normale errata
glVertex(0, 0, 0);
glVertex(1, 0, 0);
glVertex(0, 1, 0);
Visitano il forum: Nessuno e 1 ospite