[gelöst] (OpenGL) glClearColor() wirkt sich nur temporär aus
-
Hi,
ich schreibe gerade quasie mein erstes OpenGL-Programm. Im Grunde ist es erstmal eine Klasse, die mir alle für ein 3D Spiel nötigen Funktionen in einfacher Form liefern soll. Nun habe ich wirklich überall gelesen, dass ich die Funktion "glClearColor()" zum Ändern der Löschfarbe beim Leeren des Bildschirms nur einmal bzw. nur dann aufrufen muss, wenn ich die Farbe ändern will und dass OpenGL die Werte sonst solange speichert, bis ich sie wieder ändere. Aber unabhängig davon, ob ich "glClearColor()" über eine Funktion in meiner Klasse oder einzeln aufrufe. Rufe ich es vor der Programmschleife auf, hat es keine Einwirkung auf die Löschfarbe. Nur wenn ich es in der Programmschleife jeden Frame erneut aufrufe, funktioniert es.Hier ein bischen Code dazu, auch wenn ich jetzt nicht genau weiß, was dabei nützlich sein könnte:
//etc. Gamewindow->setBackcolor(1, 0, 0, 0); while(running) { //Benutzereingabenabfrage Gamewindow->clear(); //Testobjekt zeichnen und Bildpuffer flippen } //etc.
//So funktioniert es: void GLWindow::clear() { glClearColor(R, G, B, A); glClear(GL_COLOR_BUFFER_BIT); } void GLWindow::setBackcolor(double r, double g, double b, double a) { R = r; G = g; B = b; A = a; }
//Und so sollte es eigentlich funktionieren, tut es aber nicht void GLWindow::clear() { glClear(GL_COLOR_BUFFER_BIT); } void GLWindow::setBackcolor(double r, double g, double b, double a) { glClearColor(r, g, b, a); }
Hat jemand eine Idee woran es liegen könnte bzw. eine Idee, wie ich den Fehler finden kann?
Schonmal danke für's durchlesen.
EDIT: Ich habe aus Versehen glClearColor() aufgerufen, bevor ich die Zeichenfläche für OpenGL erstellt habe. Deshalb hat es nicht funktioniert. Sorry für die Störung.