glClearColor
glClearColor
ne fait pas d'effacement lui-même - il définit simplement ce que la couleur sera lorsque vous effacez réellement. Pour faire la compensation lui-même, vous devez appeler glClear
avec (au moins) COLOR_BUFFER_BIT
.
Edit: ça fait longtemps que j'ai utilisé la surabondance, donc les détails peuvent être faux, mais si ma mémoire est bonne, pour changer la couleur de l'écran en appuyant sur une touche du clavier, tu ferais quelque chose comme ceci:
void keyboard (unsigned char key, int x, int y)
{
// we'll switch between red and blue when the user presses a key:
GLfloat colors[][3] = { { 0.0f, 0.0f, 1.0f}, {1.0f, 0.0f, 0.0f } };
static int back;
switch (key) {
case 27:
exit(0);
default:
back ^= 1;
glClearColor(colors[back][0], colors[back][1], colors[back][2], 1.0f);
glutPostRedisplay();
}
}
void draw() {
glClear(GL_COLOR_BUFFER_BIT);
// other drawing here...
}
int main() {
// glutInit, glutInitDisplayMode, etc.
glutDisplayFunc(draw);
glutKeyboardFunc(keyboard);
glutMainLoop();
}
Fondamentalement, vous faites tout votre dessin quelle que soit la fonction que vous passez à glutDisplayFunc
. Presque tout le reste change juste l'état, puis appelle PostRedisplayFunc();
pour indiquer que la fenêtre doit être redessinée. Attention: comme je l'ai dit, ça fait longtemps que j'ai utilisé la surabondance et je n'ai pas testé ce code. Il montre la structure générale d'un programme de surabondance au meilleur de mes souvenirs, mais ne vous attendez pas à ce qu'il fonctionne exactement tel quel.
Après avoir appuyé sur "quel bouton"? – tafa
Puisque 'glutMainLoop()' ne retournera jamais, comment voulez-vous arriver à l'instruction 'system (" pause ")' et au second appel 'glClearColor'? – Troubadour
@tafa: comment puis-je changer mon code pour voir cet effet? – lego69