我是SDL图书馆的新手。我的任务是在屏幕上伪造2000种颜色,持续20秒。这是我的循环:
//渲染器inicialization
SDL_Renderer *ren = 0;
ren = SDL_CreateRenderer(win, -1
SDL_RENDERER_ACCELERATED);
//循环
for (int i = 1; i <= 2000; ++i) {
SDL_SetRenderDrawColor(ren, rand() % 256, rand() % 256, rand() % 256, 0);
SDL_RenderClear(ren);
SDL_RenderPresent(ren);
SDL_Delay(10);
}
在我的系统上运行大约32秒。知道为什么它会运行这么久吗?
答案 0 :(得分:1)
不是clear
,而是present
是有限的。你启用了vsync,你的显示器是60Hz - 这意味着它每秒可以显示60个不同的图像。 2000/60 = 33.3(3)
您可以禁用vsync,但它不会更改监视器功能,只会导致撕裂。
重新考虑您的问题,例如在缺失的帧之间插入颜色。