【问题标题】:Oom kills with sdl2过了一会儿 sdl 只是关闭窗口并打印出被杀死
【发布时间】:2022-06-12 04:53:30
【问题描述】:

代码:

#include"global.h"
#include"tools/entity.h"
#include"tools/input.c"
static const int width = 800;
static const int height = 600;
int main (int argc, char **argv)
{
    SDL_Init(SDL_INIT_VIDEO);
    int init = IMG_Init(IMG_INIT_PNG);
    if((init & IMG_INIT_PNG) != IMG_INIT_PNG) {
        printf("Couldnt load images :P");
    }   
    // Create the window
    SDL_Window *window = SDL_CreateWindow("Ferengine",SDL_WINDOWPOS_UNDEFINED,SDL_WINDOWPOS_UNDEFINED,width,height,SDL_WINDOW_SHOWN);
    // renderer
    SDL_Renderer *renderer = SDL_CreateRenderer(window,-1,SDL_RENDERER_ACCELERATED | SDL_RENDERER_PRESENTVSYNC);    
//  SDL_Surface * image = IMG_Load("funnyman.png");
//  if(!image) { printf("Could not load image because : %s\n",IMG_GetError()); }
//  SDL_Texture * texture = SDL_CreateTextureFromSurface(renderer, image);
    // settings
/*  SDL_SetRenderDrawColor(renderer,255,0,0,255);
    SDL_SetWindowOpacity(window,1.0f);
*/
    
    entity2D player;
    player.posx = 0;
    player.posy = 0;
    player.sprite = "funnyman.png";
    int speed = 100;
    // loop 
    bool running = true;
    SDL_Event event;
    while(running) 
    {
        while(SDL_PollEvent(&event))
        {
            if(event.type == SDL_QUIT)
            {
                running = false;
            }
        }   
    SDL_RenderClear(renderer);
//  SDL_RenderCopy(renderer, texture, NULL, NULL);
    drawImage("funnyman.png",renderer,10,10,100,100);
    drawEntity(player,renderer,100,100);
    switch(getKeyPressed()) {
        case SDLK_w:
            player.posy += 1 * speed;
            break;
        case SDLK_s:
            player.posy -= 1 * speed;
            break;
        case SDLK_d:
            player.posx += 1 * speed;
            break;
        case SDLK_a:
            player.posx -= 1 * speed;
            break;
        case SDLK_q:
            running = false;
        default:
            break;
    }
    SDL_RenderPresent(renderer);

    }
    // release resources
    IMG_Quit();
    SDL_DestroyRenderer(renderer);
    SDL_DestroyWindow(window);
    SDL_Quit();

    return 0;
}

当我运行它时(我为实体和图像写了一些东西)它可以工作并且角色会移动,但是当我有一段时间不移动时它只会关闭窗口 如果您想知道 getKeyPressed() 返回一个 int(因为 sdlkeycode 是一个 int) 所以当我运行 gcc -o 构建/Ferengine 来源/main.c -lSDL2 -lSDL2_image -ldl 它会退出窗口并打印出被杀死,我不知道是什么原因造成的(是的,我已经尝试删除 if 语句)

【问题讨论】:

  • 如果你想知道

标签: c sdl-2


猜你喜欢
  • 1970-01-01
  • 2015-08-09
  • 2012-08-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-07-24
相关资源
最近更新 更多