【发布时间】:2015-04-28 18:09:07
【问题描述】:
我正在初始化
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 很慢。
【问题讨论】:
-
某处,一只狗在吠叫。