SDL视频渲染教程

#include <SDL2/SDL.h>
int main()
{
    SDL_Window *window=NULL;
    SDL_Renderer *render=NULL;
    SDL_Texture *texture=NULL;
    SDL_Event event;
    SDL_Rect rect;
    int quit=0;
    //初始化环境
    SDL_Init(0);
    //创建一个窗口
    window = SDL_CreateWindow("test",200,200,900,600,SDL_WINDOW_SHOWN);
    if(!window)
    {

    }
    //创建一个渲染器
    render = SDL_CreateRenderer(window,-1,0);
    if(!render)
    {
    }
    /*
    //设置背景色
    SDL_SetRenderDrawColor(render,255,0,0,30);
    //SDL_RenderDrawLine(render,300,300,600,600);
    SDL_RenderClear(render);
    SDL_RenderPresent(render);
   // SDL_Delay(5000);
    //event.window
    */

    /*
        视频渲染流程:
        将一幅图像的rgb数据 经过抽象为一个纹理数据 然后发送数据至显卡,然后显卡根据纹理还原一幅图像数据,最后发送给显示器显示出来
    */
    //创建一个文理
    texture = SDL_CreateTexture(render,
                                SDL_PIXELFORMAT_ABGR8888,
                                SDL_TEXTUREACCESS_TARGET,
                                640,
                                480);

   do
   {
        SDL_PollEvent(&event);//轮训方式
        switch(event.type)
        {
        case SDL_QUIT:
            quit=1;
            break;
        default:
            break;
        }

        rect.w = 40;
        rect.h = 30;
        rect.x= rand()%640;
        rect.y = rand()%480;

        SDL_SetRenderTarget(render,texture);
        SDL_SetRenderDrawColor(render,0,0,0,0);
        //设置背景色 在画图中就是以背景色填充
        SDL_RenderClear(render);

        SDL_RenderDrawRect(render,&rect);
        SDL_SetRenderDrawColor(render,255,0,0,0);
        SDL_RenderFillRect(render,&rect);

        //设置渲染目标
        SDL_SetRenderTarget(render,NULL);
        //纹理拷贝到显卡渲染
        SDL_RenderCopy(render,texture,NULL,NULL);
        //开始渲染图像并拷贝到显示器
        SDL_RenderPresent(render);
   }while(!quit);

   //删除纹理
    SDL_DestroyTexture(texture);
    //删除渲染器
    SDL_DestroyRenderer(render);
    //删除窗口
    SDL_DestroyWindow(window);
    //卸载环境
    SDL_Quit();
    return 0;
}
发布了136 篇原创文章 · 获赞 22 · 访问量 10万+

猜你喜欢

转载自blog.csdn.net/u010261063/article/details/103730557
SDL