[OpenGL] Wieso 100% CPU



  • Hallo,
    ich hab erst Angefangen OpenGL (mit MFC) zu programmieren.
    Ich hab ein Fenster erstellt in dem ich dann OpenGL arbeiten lasse.
    Wenn mein Fenster nun verdeckt oder minimiert ist springt die CPU Auslastung
    von 0% auf 100% und hört erst auf wenn ich das Fenster wieder in den Vordergrund setzte.
    Wenn ich überprüfe ob es den Fokus hat bringts auch nichts...
    Was muss ich tun damit ich das verhindere ?

    PS:
    Ich hab das Zeichnen in OnPaint platziert:

    if(IsIconic())//Bringt nichts
    		return;
    
    	if(GLDrawScene())//Zeichnet
    		SwapBuffers(GetWindowDC()->GetSafeHdc());
    

    PS: Mein Fenster braucht 7MB RAM wenn ich es starte...
    Is das normal bei OpenGL???
    THX



  • Sicher das IsIconic() in den richtigen Momenten "true" liefert?

    Ansonsten würde ich auf einen Treiberbug tippen... Ati Karte?

    Das mit den 7 MB ist ok, afaik wird der Speicherplatz von shared Libraries
    (OpenGL (bzw. Treiber), WinAPI, andere Windowslibs) mit zum Speicherverbrauch
    der Anwendung dazugezählt.



  • XCooperation schrieb:

    Was muss ich tun damit ich das verhindere ?

    Versuch doch zu Sleep()en.

    Bye, TGGC \-/



  • OnPaint() sollte doch gar nicht aufgerufen werden müssen, wenn das Fenster minimiert ist, da es nichts zu zeichnen gibt?!! 😕
    Und wenn es doch aufgerufen wird, solltest Du wenigstens invalidaten, um Windows zu sagen, daß es nichts mehr zu zeichnen gibt. Weiß aber nicht wie das unter MFC exakt gelöst ist...



  • Benutzt du einen Timer der OnPaint regelmässig manuell aufruft ? Kann mir nicht vorstellen, das die Funktion im minimierten Zustand überhaupt angesprochen wird. Falls ja, dann setze den Timer aus wenn du minimiert bist (also nicht du - das Fenster natürlich 😃 ) und erzeuge einen neuen beim maximieren.


Anmelden zum Antworten