Ich habe ein sehr einfaches Spiel Schleife GLFW wie folgt verwendet wird (Windows x64 Release-Modus)Warum isst einfaches GLFW-Programm die gesamte verfügbare CPU, obwohl das Programm im Leerlauf ist (laut Process Explorer)?
ich das Programm erwarten würde sehr schnell auszuführen, scheint aber es ist mein Delta wie unten immer berechnet wird 16.667ms welche diese GLFW erscheinen würde ist irgendwie die Geschwindigkeit meiner Hauptschleife zu begrenzen. Dies ist kein Problem, da es mir egal ist, mehr als 60hz zu bekommen. Prozess-Explorer und Windows-Task-Manager berichten jedoch, dass mein Programm den Großteil des CPU-Kerns verwendet.
Speziell essen scheint, dass glfwSwapBuffers() eine Menge CPU isst, obwohl ich nichts zeichne. Wenn Sie diesen Anruf entfernen, sinkt die CPU-Nutzung auf 0,5%.
Übrigens wird meine Schlaffunktion fast nie aufgerufen, weil das Delta immer genau 16.6ms ist.
main()
{
double prevTime = glfwGetTime();
//init glfw ..
while(!glfwWindowShouldClose(window))
{
double time0=glfwGetTime();
double delta = time0- prevTime;
if (delta >= g_FrameInterval)
{
glfwPollEvents();
prevTime= time0;
glfwSwapBuffers(window);
}
else
{
Sleep(10);
}
}
}
Sie sollten wahrscheinlich das 'Windows'-Tag hinzufügen, da Ihre Frage spezifisch für Windows ist. –