Używam GLFW, więc skonfiguruj okno z OpenGL. Ponieważ dopiero zacząłem uczyć się OpenGL i wszystkich rzeczy wokół niego, może to brzmieć jak głupie pytanie, ale dlaczego przykładowy program GLFW używa prawie 100% procesora, kiedy okno nie jest aktywnie wyświetlane (zminimalizowane lub ukryte przez inne okno)?Wysokie użycie procesora, gdy okno GLFW/OpenGL nie jest widoczne
Oto exmaple GLFW używam go na Mac OS z Xcode:
#include <GLFW/glfw3.h>
int main(void)
{
GLFWwindow* window;
if (!glfwInit()) /* Initialize the library */
return -1;
/* Create a windowed mode window and its OpenGL context */
window = glfwCreateWindow(640, 480, "Hello World", NULL, NULL);
if (!window)
{
glfwTerminate();
return -1;
}
/* Make the window's context current */
glfwMakeContextCurrent(window);
/* Loop until the user closes the window */
while (!glfwWindowShouldClose(window))
{
/* Render here */
/* Swap front and back buffers */
glfwSwapBuffers(window);
/* Poll for and process events */
glfwPollEvents();
}
glfwTerminate();
return 0;
}
Możesz rozważyć użycie VSYNC, przy okazji, które znacznie zmniejszy twój wątek rysowania. Zwykle robi się to z czymś bardziej inteligentnym niż spinlock, gdy rysujesz z dużą ilością klatek na sekundę, więc to skutecznie zmniejsza obciążenie procesora. Renderowanie nie jest wydajne *** *** szybciej *** niż możesz przesyłać klatki do monitora, chyba że masz super wymagające wymagania dotyczące czasu oczekiwania na wejście. –
Dzięki za sugestię VYSNC, już robię glfwSwapInterval (1), myślę, że to wystarczy? –
Tak, to wystarczy. Nie zauważyłem tego w twoim kodzie, więc założyłem, że korzystasz z domyślnego interwału wymiany. –