簡體   English   中英

無法使用IMG_Load()加載圖片

[英]Can't load image with IMG_Load()

我的SDL_image庫有問題。 我編寫了一個簡單的程序,加載了一張Spritesheet並在單擊鼠標左鍵時對其進行了動畫處理。 這是代碼:

#include <SDL2/SDL.h>
#include <SDL2/SDL_image.h>

const int sw=800;
const int sh=450;

int main(){
    SDL_Init(SDL_INIT_EVERYTHING);
    IMG_Init(IMG_INIT_PNG);

    bool quit=false;
    bool shoot=false;
    SDL_Event event;
    Uint32 time;
    unsigned  char frame=0;


    SDL_Window* window = SDL_CreateWindow("Sprite",SDL_WINDOWPOS_UNDEFINED,SDL_WINDOWPOS_UNDEFINED,sw,sh,0);
    SDL_Renderer* render = SDL_CreateRenderer(window,-1,0);

    SDL_Surface* image = IMG_Load("p_pt_12.png");
    printf("IMG_Load: %s\n", IMG_GetError());

    SDL_Texture* texture = SDL_CreateTextureFromSurface(render, image);

    while(!quit){
        if(shoot){
            time=SDL_GetTicks();
            time/=(750/5);
            frame=time%5;
            if(frame==4){
                frame = 0;
                shoot=false;
            }
        }
            SDL_Rect srcrect = { frame*96,0,96,96};
            SDL_Rect dstrect = { (sw-96)/2, (sh-96)/2, 96, 96 };


        SDL_PollEvent(&event);
        switch (event.type){
            case SDL_QUIT:
                quit = true;
                break;
            case SDL_MOUSEBUTTONDOWN:
                if(event.button.button == SDL_BUTTON_LEFT) shoot = true;
                break;
        }

        SDL_RenderClear(render);
        SDL_RenderCopy(render, texture,&srcrect,&dstrect);
        SDL_RenderPresent(render);
    }

    SDL_DestroyTexture(texture);
    SDL_FreeSurface(image);
    SDL_DestroyRenderer(render);
    SDL_DestroyWindow(window);
    IMG_Quit();
    SDL_Quit();

    return 0;
}    

問題是當我嘗試運行它時,IMG_Load()返回NULL指針,而IMG_GetError()說“不支持的文件格式”。 Spritesheet是一個.png文件,但是.jpg Spritesheet也是如此。 我確定代碼是正確的,因為它可以在其他設備上使用完全相同的圖像文件(例如超級按鈕)運行。 我嘗試過重新安裝SDL和SDL_image,但是它不起作用。 SDL_RWops和IMG_LoadPNG_RW都不起作用。 我在64位Linux Mint上使用Eclipse Kepler SR2(但我也嘗試過使用Code :: Blocks 12.11運行,結果相同)。

我將不勝感激,謝謝!

您的代碼正確無誤,對我有用。 您的系統可能缺少sdl_image處理圖像所需的某些庫,例如libpng和zlib。 安裝它們,讓我們知道它是否有效。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM