我正在初始化
SDL_Init(SDL_INIT_VIDEO);
screen = SDL_SetVideoMode(800, 600, 32, SDL_SWSURFACE|SDL_DOUBLEBUF);
然后在调用睡眠之间循环调用,只是
SDL_LockSurface(screen);
// Will eventually twiddle pixels here...but not yet
SDL_UnlockSurface(screen);
SDL_Flip(screen);
并且调用翻转需要不同的时间,但大约 10 毫秒,这是很多白费。
所以这让我想知道我是否正在导致从视频内存复制到系统内存或其他东西,我应该以不同的方式创建表面。但是,另外,无论我传递给什么标志,screen->flags
它总是等于SDL_ASYNCBLIT
并且没有设置其他位SDL_SetVideoMode
。所以无论如何我都无法制作任何其他类型的表面。
我是否应该创建另一个屏幕外表面,渲染到该表面,然后将其传送到屏幕上?我究竟做错了什么?
编辑:删除 SDL_Lock 和 SDL_Unlock 对并不能加快速度。SDL_Flip 很慢。