1

SDL_DisplayFormatAlpha を呼び出そうとすると、ハンドルされない例外が発生します。

コード:

SDL_Surface* load_image ( char* filename ) {
    SDL_Surface* loadedImage = NULL;
    SDL_Surface* optimizedImage = NULL;
    loadedImage = IMG_Load ( filename );

    if ( loadedImage != NULL ) {
        optimizedImage = SDL_DisplayFormatAlpha ( loadedImage );
        SDL_FreeSurface ( loadedImage );
    }

    return optimizedImage;
}

bool init ( SDL_Surface*& screen ) {

    //Initialize SDL
    if ( SDL_Init ( SDL_INIT_EVERYTHING ) == -1 ) return false;
    screen = SDL_SetVideoMode ( SCREEN_WIDTH, SCREEN_HEIGHT, SCREEN_BPP, SDL_FULLSCREEN );
    if ( screen == NULL ) return false;

    //Set the caption
    SDL_WM_SetCaption ( "Hero RPG", NULL );

    return true;
}

主要:

int main ( int argc, char** argv ) {
init ( screen );

load_image ( "graphics\\background\\overworld" );

return 0;
}

他の:

コメントアウトしたら

    //if ( loadedImage != NULL ) {
    //  optimizedImage = SDL_DisplayFormatAlpha ( loadedImage );
    //  SDL_FreeSurface ( loadedImage );
    //}

変更する

    loadedImage = IMG_Load ( filename );

    optimizedImage = IMG_Load ( filename );

画像は正常に読み込まれます。したがって、ファイル名に問題がないことはわかっています。

質問:

これは、私が設計した最後のプログラムで使用した正確な関数であり、前回は正常に機能しました。これに対する答えは箱の外にあると思います。この未処理の例外を受け取るのはなぜですか?

4

1 に答える 1