glClearColor
löscht sich selbst nicht - es stellt lediglich die Farbe ein, wenn Sie tatsächlich löschen. Um das Clearing selbst durchzuführen, müssen Sie glClear
mit (mindestens) COLOR_BUFFER_BIT
aufrufen.
Edit: Es ist schon eine ganze Weile her, seit ich das Überschwemmen verwendet habe, also könnten die Details falsch sein, aber wenn der Speicher dient, um die Bildschirmfarbe als Antwort auf eine Taste auf der Tastatur zu ändern, würden Sie etwas tun das:
%Vor% Im Grunde genommen machst du deine Zeichnung in jeder Funktion, die du an glutDisplayFunc
übergibst. Fast alles andere ändert nur den Zustand und ruft dann PostRedisplayFunc();
auf, um zu sagen, dass das Fenster neu gezeichnet werden muss. Warnung: Wie gesagt, es ist schon eine Weile her, seit ich das Überangebot benutzt habe und diesen Code nicht getestet habe. Es zeigt die allgemeine Struktur eines Überschwemmungsprogramms nach bestem Wissen meiner Erinnerung, aber erwarte nicht, dass es genau so funktioniert wie es ist.
Ich könnte mir vorstellen, dass Sie zu diesem Zeitpunkt keinen OpenGL-Kontext haben, den Sie glClearColor
aufrufen.
Aber ...
... Ich habe noch nie eine Schwemme benutzt, also schaut euch kurz die Dokumente suggeriert, dass Sie nach glutCreateWindow
tatsächlich einen Kontext haben, vielleicht ist es das nicht.
Wie mein Kommentar zu Ihrer Frage sagt, bin ich neugierig auf den zweiten Aufruf von glClearColor
und darauf, wie Sie glauben, dass Sie ihn erreichen werden. Das ist wahrscheinlich die Ursache des Problems. Um etwas auf Tastendruck zu tun, müsste ich einen Callback mit glutKeyboardFunc
registrieren.