C++ SDL布告真的很慢

C++ SDL布告真的很慢,c++,sdl,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_CreateRGB

下面是我的代码问题:

我创建一个显示屏:

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的曲面,然后根据用户需要缩小它,然后显示该曲面。我有一个上网本,所以我很快就注意到帧速率下降,这使它显著下降。我计划做彩色键和每像素阿尔法光点,以及全屏的情况下,重要的标志


那么,我做错了什么,导致速度变慢了?

请确保使用将曲面转换为最佳显示格式。

为什么要自己缩放?使用OpenGL曲面并使其自动缩放。我甚至还没有缩放它,但我计划使用SDL_gfx zoomSurface()。首先,您不需要在游戏循环的每次迭代中创建新曲面。只有当窗口大小改变时,才有意义创建一个新窗口。但是,如果使用OpenGL曲面,则可以避免调整SDL RGB曲面的大小,并在屏幕大小更改时仅更改OpenGL投影矩阵。