Hintergrundfarbe in opengl

8

Ich möchte die Hintergrundfarbe des Fensters nach dem Drücken der Taste ändern, aber mein Programm funktioniert nicht, kann mir jemand sagen, warum, danke im Voraus

%Vor%     
lego69 24.05.2010, 16:29
quelle

2 Antworten

17

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.

    
Jerry Coffin 24.05.2010, 16:39
quelle
0

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.

    
Troubadour 24.05.2010 16:32
quelle

Tags und Links