随笔 - 632  文章 - 17  评论 - 54  阅读 - 93万

SDL2加载一个图片

一、概述

  使用SDL2+SDL2_Image显示一张图片

  操作步骤:

    SDL2的操作流程:

      1.初始化SDL SDL_Init

      2.创建SDL_Window SDL_CreateWindow

      3.创建渲染器SDL_Renderer SDL_CreateRenderer

      4.生成一个SDL_Surface,这个Surface直接通过IMG_Load中加载图片获得

        a.先初始化SDL2_Image,IMG_Init

        b.把图片加载到surface缓冲区,IMG_Load(“图片路径”)

      5.创建SDL_Texture,这个texture从SDLSurface中获得,通过SDL_CreateTextureFromSurface

      6.把问题贴到渲染器上,SDL_RenderCopy

      7.把渲染器中的数据渲染到显示屏上,SDL_RenderPresent

      8.对使用到的资源进行逐个销毁

 

      大概流程如下:

 

      

二、代码示例

复制代码
#include "../include/sdl_show_image.h"
#include <opencv2/opencv.hpp>
using namespace cv;
using namespace std;
/*
    构造函数
*/
SdlShowImage::SdlShowImage() {
    
    //初始化SDL
    SDL_Init(SDL_INIT_EVERYTHING);
    //创建一个Surface
    SDL_Surface* surface = IMG_Load("E:/tony/demo/visualstudio_workspace/SDLDemo/SDLDemo/images/cat2.jpg");
    //创建SDL窗口
    SDL_Window* window = SDL_CreateWindow("window name", SDL_WINDOWPOS_UNDEFINED, SDL_WINDOWPOS_UNDEFINED, surface->w,surface->h,0);
    //初始化SDL_IMAGE(这个主要是为了方便加载图片)
    IMG_Init(IMG_INIT_PNG|IMG_INIT_JPG);
    //创建渲染器
    SDL_Renderer* renderer = SDL_CreateRenderer(window,-1,0);
    
    //创建纹理
    SDL_Texture* texture = SDL_CreateTextureFromSurface(renderer,surface);
    //把纹理渲染到渲染器上
    SDL_RenderCopy(renderer,texture,NULL,NULL);
    //把渲染器中的数据渲染到屏幕上
    SDL_RenderPresent(renderer);
    //单位是毫秒(如果不加这个图像显示后会立马关闭)
    SDL_Delay(3000);

    //执行销毁动作
    //销毁纹理
    SDL_DestroyTexture(texture);
    //释放surface
    SDL_FreeSurface(surface);
    //销毁渲染器
    SDL_DestroyRenderer(renderer);
    //销毁window
    SDL_DestroyWindow(window);

    //退出SDL_Image库
    IMG_Quit();
    //退出SDL
    SDL_Quit();



}
复制代码

 

三、演示图片

 

posted on   飘杨......  阅读(180)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· 单线程的Redis速度为什么快?
· 展开说说关于C#中ORM框架的用法!
· Pantheons:用 TypeScript 打造主流大模型对话的一站式集成库
历史上的今天:
2014-11-14 Unable to execute dex: Multiple dex files defineLcom/google/gson/JsonDeserializer;
2014-11-14 Android 工程引入自定义Library后,工程无法识别Library中的类
< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5

点击右上角即可分享
微信分享提示