当我将大图像添加到 sdl 纹理时,巨大的 fps 下降

Huge fps drop when I add big image to sdl texture

所以,当我将较小的图像添加到 sdl 屏幕时,fps 绝对没有下降,但后来我在我的所有屏幕上添加了 sdl 背景,包括细节和所有内容。然后我从 350fps 下降到 150fps。也许有办法解决它?将此纹理添加到其他屏幕或类似的东西?

这是我添加这张图片的方法:

正在加载我的游戏:

SDL_Texture* texture;
SDL_Rect rect;
texture = IMG_LoadTexture(renderer, "data/interiors/baznycia.png");
rect.x = 0;
rect.y = 0;
rect.w = screenWidth;
rect.h = screenHight;

在我的游戏循环中:

SDL_RenderClear(renderer);
SDL_RenderCopy(renderer, texture, NULL, &rect);
SDL_RenderPresent(renderer);

在您的情况下,由于您绘制的游戏背景图像具有恒定 window 大小,因此将图像尺寸与屏幕尺寸相匹配可能会有所帮助,以避免对您的图像应用插值纹理(这需要计算时间,因此可能会限制您的 FPS)

此外,有时纹理像素格式不匹配可能会导致不必要的纹理转换,因此在将其绘制到屏幕之前请检查您使用的 format 是否正确。