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(); }
三、演示图片
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· 单线程的Redis速度为什么快?
· 展开说说关于C#中ORM框架的用法!
· Pantheons:用 TypeScript 打造主流大模型对话的一站式集成库
· SQL Server 2025 AI相关能力初探
2014-11-14 Unable to execute dex: Multiple dex files defineLcom/google/gson/JsonDeserializer;
2014-11-14 Android 工程引入自定义Library后,工程无法识别Library中的类