Не удается загрузить изображения с использованием пользовательской функции в SDL - PullRequest
0 голосов
/ 10 марта 2012

Мой скрипт не запускается, так как он открывает окно, а затем закрывает его.Сбой при загрузке файла.Сценарий работает на моем ноутбуке, но не на моем настольном ПК, и все необходимые файлы находятся там.Это связано с этой функцией;

Это моя функция load_image();

SDL_Surface *load_image( std::string filename )
{
    //The image that's loaded
    SDL_Surface* loadedImage = NULL;

    //The optimized surface that will be used
    SDL_Surface* optimizedImage = NULL;

    //Load the image
    loadedImage = IMG_Load( filename.c_str() );

    //If the image loaded
    if( loadedImage != NULL )
    {
        //Create an optimized surface
        optimizedImage = SDL_DisplayFormatAlpha( loadedImage );

        //Free the old surface
        SDL_FreeSurface( loadedImage );

        //If the surface was optimized
        if( optimizedImage != NULL )
        {
            //Color key surface
            SDL_SetColorKey( optimizedImage, SDL_SRCCOLORKEY, SDL_MapRGB( optimizedImage->format, 0, 0xFF, 0xFF ) );
        }
    }

    //Return the optimized surface
    return optimizedImage;

}

И я называю это так;

sprite = load_image( "sprites.png" );

if( sprite == NULL )
{
    return false;
}

Единственная проблема заключается в, он всегда возвращает ложь, даже если файл там.Проблема в том, что этот код не возвращает false на моем ноутбуке!

1 Ответ

2 голосов
/ 10 марта 2012

Все вроде нормально, попробуйте использовать IMG_GetError() для диагностики.Вот код из документа SDL, показывающий, как:

// load sample.png into image
SDL_Surface *image;
image=IMG_Load("sample.png");
if(!image) {
    printf("IMG_Load: %s\n", IMG_GetError());
    // handle error
}
...