美文网首页
SDL 教程 06 : 加载其他格式图片

SDL 教程 06 : 加载其他格式图片

作者: wjundong | 来源:发表于2020-02-19 00:29 被阅读0次

    示例代码

    
    /**
     * Title: 使用 SDL_image库 加载其他图片格式
     * 
     * 本例中我们将通过 SDL_image 库来实现其他图片格式的加载,
     * 同SDL_LoadBMP一样, IMG_Load 也从图片中新建一个图层并返回给用户
     */
    
    #include <SDL2/SDL_image.h>
    #include <SDL2/SDL.h>
    #include <stdio.h>
    
    #define sdlerror() { printf("error in line %d %s\n", __LINE__, SDL_GetError()); exit(-1); }
    
    int main(int argc, char *argv[])
    {
        // 初始化
        if(SDL_Init(SDL_INIT_VIDEO) < 0) sdlerror();
        // 创建窗口
        SDL_Window *window = SDL_CreateWindow( "SDL Tutorial", SDL_WINDOWPOS_UNDEFINED, 
            SDL_WINDOWPOS_UNDEFINED, 640, 480, SDL_WINDOW_SHOWN );
    
        /**
         * 在使用 SDL_image 前,我们需要进行初始化, 如果初始化成功,则返回其参数
         * 这里初始化 IMG 为 支持 PNG, 该参数可以支持或运算以同时支持多种图片
         * 比如同时支持 PNG 和 JPG 可以这样写参数 IMG_INIT_PNG | IMG_INIT_JPG 
         */ 
        if(IMG_Init(IMG_INIT_PNG) != IMG_INIT_PNG) 
            sdlerror();
        // 从文件中加载图片
        SDL_Surface *pngSurface = IMG_Load("loaded.png");
        if(pngSurface == NULL) 
            sdlerror();
        
        // 获取窗口图层
        SDL_Surface *screenSurface = SDL_GetWindowSurface(window);
        // 变换成窗口图层格式的图形
        SDL_Surface *newPngSurface = SDL_ConvertSurface( pngSurface, screenSurface->format, 0 );
        SDL_FreeSurface(pngSurface);
        pngSurface = NULL;
        //贴到主屏幕
        SDL_BlitSurface( newPngSurface, NULL, screenSurface, NULL );
        SDL_UpdateWindowSurface(window);
        
        SDL_Event event;
        while( SDL_PollEvent( &event ) != 0 || event.type != SDL_QUIT);
    
        SDL_DestroyWindow(window);
        SDL_FreeSurface(newPngSurface);
        SDL_Quit();
        return 0;
    }
    

    运行结果

    运行结果.png

    教程所用图片

    loaded.png

    相关文章

      网友评论

          本文标题:SDL 教程 06 : 加载其他格式图片

          本文链接:https://www.haomeiwen.com/subject/amkofhtx.html