저는 최신 CPU (AMD FX 4170)와 최신 GPU (NVidia GTX 660)를 보유하고 있습니다. 그러나이 간단한 프로그램은 내 CPU 코어 중 하나를 완전히 사용합니다. 즉, 하나의 4.2GHz 코어를 사용하여 을 입력하지 마십시오.은 60FPS입니다. 이 프로그램에 어떤 문제가 있습니까?SDL + OpenGL에서 높은 CPU 사용량
#include <SDL/SDL.h>
int main(int argc, char** argv)
{
SDL_Init(SDL_INIT_VIDEO | SDL_INIT_AUDIO);
SDL_SetVideoMode(800, 600, 0, SDL_OPENGL | SDL_RESIZABLE);
while(true)
{
Uint32 now = SDL_GetTicks();
SDL_GL_SwapBuffers();
int delay = 1000/60 - (SDL_GetTicks() - now);
if(delay > 0) SDL_Delay(delay);
}
return 0;
}
그러나 나머지 루프가 1/60 초가 걸릴 때만 해당됩니까? 현대 시스템에서 오래 걸리지 않아야합니다. – Scintillo
@Scintillo, 그 방법이 15 밀리 초 이상 걸리면,이 상황이 발생합니다. std :: cout << delay << std :: endl; ? –
실제로 SDL_GL_SwapBuffers(); 그 시간을 사용합니다. 질문이 그 이유입니까? 그것은 vsync를 기다리고있을 수 있지만 그것을하는 동안 전체 CPU를 사용해야하는 이유는 무엇입니까? – Scintillo