c++ - SDL_Renderer 使用 100% CPU 和 RAM 什么也不做

标签 c++ memory sdl sdl-2 render-to-texture

我正在使用 SDL2 制作游戏,不久游戏就占用了过多的 RAM,甚至无法关闭。我剥离了代码,发现即使是这个毫无意义的文件程序也会占用我 100% 的 CPU 和一大块 RAM。

#include "SDL.h"
#include "SDL_image.h"
#include <cassert>

const int SCREEN_WIDTH = 640;
const int SCREEN_HEIGHT = 480;

SDL_Renderer* gRenderer;
SDL_Window* gWindow;

void init();
void close();

int main()
{
    init();
    SDL_Event e;
    bool quit;

    while( !quit )
    {
         while( SDL_PollEvent( &e ) != 0 )
         {
              if( e.type == SDL_QUIT )
                  quit = true;
         }
    }
    close();
}

void init()
{
    assert( SDL_Init( SDL_INIT_EVERYTHING ) >= 0 );
    gWindow = SDL_CreateWindow( "Space", SDL_WINDOWPOS_UNDEFINED,
                   SDL_WINDOWPOS_UNDEFINED, SCREEN_WIDTH,
                   SCREEN_HEIGHT, SDL_WINDOW_SHOWN );
    assert( gWindow );

    gRenderer = SDL_CreateRenderer( gWindow, -1, SDL_RENDERER_ACCELERATED );
    assert( gRenderer );

    int imgFlags = IMG_INIT_PNG;
    assert( IMG_Init( imgFlags ) & imgFlags );

    SDL_SetRenderDrawColor( gRenderer, 0xFF, 0xFF, 0xFF, 0xFF );
}

void close()
{
    SDL_DestroyRenderer( gRenderer );
    SDL_DestroyWindow( gWindow );

    IMG_Quit();
    SDL_Quit();
}

最佳答案

您正在以尽可能快的速度运行程序,因此它正在使用它可以获得的所有资源。

尝试限制 FPS。

关于c++ - SDL_Renderer 使用 100% CPU 和 RAM 什么也不做,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38236384/

相关文章:

C++ vim IDE。你需要的东西

c++ - 如何专门针对特定类型的模板类方法?

使用位图与链表进行内存管理

c++ - 为什么在c/c++中需要分配内存?

C++在像俄罗斯方 block 这样的游戏中设置帧速率

c++ - 合并枚举 C++

performance - CPU速度是否受从内存中获取指令的速度限制?

c++ - 在 SDL_blitsurface 中使用 SDL_Rect vector 时出现 C++ 运行时错误

c++ - 如何在 C++ 中使用 SDL2.0 在屏幕上移动矩形?

c++ - C++ SDL 和 (Python PyGame) 是否被业余爱好者以外的人使用?