美文网首页
SDL 教程 02 : 在屏幕上贴一张图

SDL 教程 02 : 在屏幕上贴一张图

作者: wjundong | 来源:发表于2020-02-18 23:27 被阅读0次

    示例代码

    #include <SDL2/SDL.h>
    
    const int SCREEN_WIDTH = 640;
    const int SCREEN_HEIGHT = 480;
    
    int main(int argc, char const *argv[])
    {
        SDL_Window* window = NULL;
    
        /** SDL_Surface 只是一种图像数据类型,它包含图像的像素以及渲染该图像所需的所有数据
         *  SDL_Surface 使用软件渲染,这意味着它使用CPU进行渲染。硬件渲染图像是可以的,但是有点困难
         *  所以我们先用简单的方法来学习。在以后的教程中,我们将介绍如何渲染GPU加速图像 */
    
        // 该图层结构用来获取窗口的 surface
        SDL_Surface *screenSurface = NULL;
        // 该图层结构用于加载和显示图片的 
        SDL_Surface *imageSurface = NULL;
    
        // 初始化 SDL, 创建窗口
        if(SDL_Init(SDL_INIT_VIDEO) < 0)
        {
            printf( "SDL could not initialize! SDL_Error: %s\n", SDL_GetError() );
            exit(-1);
        }
        else
        {
            window = SDL_CreateWindow( "SDL Tutorial", SDL_WINDOWPOS_UNDEFINED, 
                SDL_WINDOWPOS_UNDEFINED, SCREEN_WIDTH, SCREEN_HEIGHT, SDL_WINDOW_SHOWN );
            if(window == NULL)
            {
                printf( "Window could not be created! SDL_Error: %s\n", SDL_GetError() );
                exit(-1);
            }
            else
            {
                screenSurface = SDL_GetWindowSurface( window );
            }
        }
    
        // SDL_LoadBMP 会加载图片会自动创建一个图层
        imageSurface = SDL_LoadBMP("hello_world.bmp");
        if(imageSurface == NULL)
        {
            printf( "Unable to load image ! SDL Error: %s\n", SDL_GetError() );
        }
        else 
        {
            /** SDL_BlitSurface 快速将一个位图块从一个地方传输到另一个地方
             *  SDL_BlitSurface 的第一个参数是源图层。第三个参数是目的图层
             *  我们将在以后的教程中再讨论第二个和第四个参数 */
            SDL_BlitSurface( imageSurface, NULL, screenSurface, NULL );
        }
    
        SDL_UpdateWindowSurface( window );
        SDL_Delay( 2000 );
    
        SDL_FreeSurface( imageSurface );
        SDL_DestroyWindow( window );
        SDL_Quit();
    
        return 0;
    }
    

    运行结果


    运行结果.png

    注: 你可以将代码

     imageSurface = SDL_LoadBMP("hello_world.bmp");
    

    中图片地址改成自己测试的图片,注意图片格式必须是 bmp 格式的,要导入其他格式的图片后面会讲解,要用到 SDL_image 库

    相关文章

      网友评论

          本文标题:SDL 教程 02 : 在屏幕上贴一张图

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