SDL blitting非常慢

时间:2012-03-14 23:12:48

标签: c++ sdl

所以这是我的代码问题:

我创建了一个显示屏:

displayScreen = SDL_SetVideoMode(SCREEN_WIDTH, SCREEN_HEIGHT, SCREEN_BPP, SDL_SWSURFACE|SDL_DOUBLEBUF);

然后我创建了一个背景:

background = load_image("gliderGameBackground1.png");
// I optimize the image

然后我有一个中间表面:

screen = SDL_CreateRGBSurface(SDL_SWSURFACE|SDL_SRCALPHA, 300, 300, 32,
                                   rmask, gmask, bmask, amask);

然后我应用表面:

apply_surface(0, 0, background, screen);
apply_surface(0, 0, screen, displayScreen);

我有一个中间屏幕的原因是我的程序将在游戏循环中始终如一地制作1920 x 1080表面,然后根据用户需要缩小它,然后显示该表面。我有一个上网本,所以我注意到帧速率下降很快,这显着下降。我打算做colorkey和每像素alpha blitting以及全屏以防万一对标志很重要。

那么我做错了是什么让这个很慢?

1 个答案:

答案 0 :(得分:0)

请务必使用SDL_DisplayFormat()将曲面转换为显示格式以获得最佳blitting。