SDL渲染性能差

问题描述

我正在用SDL2编码2D游戏。我正在尝试解决渲染性能不佳的问题。当我在VirtualBox中运行它时,性能相当不错,但是当我在RaspBerry Pi上运行它时,效果却很糟糕。所有4个核心始终处于70%的利用率。我发现渲染部分对性能的影响最大。我想知道这是否是在屏幕上渲染和更新纹理的最佳方法。这是我用于渲染的代码

SDL_Init(SDL_INIT_VIDEO|SDL_INIT_AUdio);
SDL_Window* window = NULL;
window = SDL_CreateWindow
(
    "MoonRivals",SDL_WINDOWPOS_CENTERED,WINDOW_WIDTH,WINDOW_HEIGHT,SDL_WINDOW_SHOWN
);
SDL_Renderer* renderer1 = NULL;
renderer1 =  SDL_CreateRenderer( window,-1,SDL_RENDERER_ACCELERATED);

SDL_Texture* texture = SDL_CreateTextureFromSurface(renderer1,surface);
SDL_Texture* texture1 = SDL_CreateTextureFromSurface(renderer1,surface);
SDL_Texture* textureBcgrnd = SDL_CreateTextureFromSurface(renderer1,surfaceBcgrnd);
SDL_Texture* textureMeteorite = SDL_CreateTextureFromSurface(renderer1,surfaceMeteorite);
SDL_FreeSurface(surface);
SDL_FreeSurface(surfaceMeteorite);
SDL_FreeSurface(surfaceBcgrnd);

SDL_QueryTexture(textureBcgrnd,NULL,&bcgrnd.w,&bcgrnd.h);
SDL_QueryTexture(texture,&r.w,&r.h);
for (int i = 0; i < 3; i++)
{
     SDL_QueryTexture(textureMeteorite,&meteorite[i].w,&meteorite[i].h);
}
for (int i = 0; i < 10; i++)
{
    SDL_QueryTexture(texture1,&env[i].w,&env[i].h);
}


SDL_RenderClear(renderer1);
SDL_Rendercopy(renderer1,textureBcgrnd,&bcgrnd);
for (int i = 0; i < 10; i++)
    {
        SDL_Rendercopy(renderer1,texture1,&env[i]);
    }
SDL_Rendercopy(renderer1,texture,&player);
SDL_RenderPresent(renderer1);

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)