couleur d'arrière-plan en opengl
Je veux changer la couleur d'arrière-plan de la fenêtre après avoir appuyé sur le bouton, mais mon programme ne marche pas, quelqu'un peut-il me dire pourquoi, merci d'avance
int main(int argc, char* argv[])
{
glutInit(&argc, argv);
glutInitDisplayMode(GLUT_SINGLE | GLUT_RGB);
glutInitWindowSize(800, 600);
glutInitWindowPosition(300,50);
glutCreateWindow("GLRect");
glClearColor(1.0f, 0.0f, 0.0f, 1.0f); <---
glutDisplayFunc(RenderScene);
glutReshapeFunc(ChangeSize);
glutMainLoop();
system("pause");
glClearColor(0.0f, 1.0f, 0.0f, 1.0f); <---
return 0;
}
Après avoir appuyé sur "quel est le bouton"?
Depuis
comment puis-je modifier mon code pour voir cet effet?
Depuis
glutMainLoop()
ne reviendra jamais comment espérez-vous obtenir de votre system("pause")
déclaration et le deuxième glClearColor
appel?comment puis-je modifier mon code pour voir cet effet?
OriginalL'auteur lego69 | 2010-05-24
Vous devez vous connecter pour publier un commentaire.
glClearColor
ne fait pas de compensation elle-même -- c'est juste définit ce que la couleur sera quand vous ne vous en fait. Pour faire la compensation de lui-même, vous devez appelerglClear
avec (au moins)COLOR_BUFFER_BIT
.Edit: il a été un certain temps depuis que j'ai utilisé glut, de sorte que les détails de ce qui pourrait être mauvais, mais si ma mémoire est bonne, pour changer la couleur de l'écran en réponse à appuyer sur une touche du clavier, vous feriez quelque chose comme ceci:
Fondamentalement, vous faites tout votre dessin quelle que soit la fonction que vous passez à
glutDisplayFunc
. Presque rien d'autre, juste des changements de l'état, puis des appelsPostRedisplayFunc();
dire glut que la fenêtre doit être redessiné. Avertissement: comme je l'ai dit, il a été un moment depuis que j'ai utilisé glut et je n'ai pas testé ce code. Il montre la structure générale d'un programme glut au meilleur de mon souvenir, mais ne vous attendez pas à fonctionner exactement comme-est.Cette solution est parfaite. Essayez d'utiliser le double buffer? glutMainLoop est très bien. Dites-moi si cela fonctionne avec le double buffering
OriginalL'auteur Jerry Coffin
J'imagine que vous ne disposez pas d'un contexte OpenGL à ce point que vous appelez
glClearColor
.Mais...
...Je n'ai jamais utilisé de surabondance de l'avant, donc un coup d'oeil rapide à la docs suggère que vous aurez en fait un contexte d'après
glutCreateWindow
alors peut-être que ce n'est pas ça.Que mon commentaire sur votre question dit que je suis curieux de connaître le deuxième appel à
glClearColor
et comment vous pensez que vous allez atteindre. C'est plus probablement la cause du problème. Rien à faire sur une touche je crois que vous devez vous enregistrer un rappel à l'aideglutKeyboardFunc
.Je suis workin dans Eclipse
OriginalL'auteur Troubadour