SDL2.0 展示图片

这篇博客详细介绍了如何从SDL1.2迁移到SDL2.0,包括SDL的主要构成部分和关键API的使用。通过创建窗口、加载位图、渲染纹理等步骤,展示了SDL2.0的基本操作。同时,文章提供了完整的C++代码示例,演示了一个简单的窗口显示位图并响应退出事件的应用。
摘要由CSDN通过智能技术生成

看了很久雷神的FFmpeg  ,发现需要SDL的技术也比较多 。就总结了一下。

在复杂的SDL内容也是这几个构成的。

2.0比1.0内容变化的还比较大 主要参考了这几篇文章

SDL1.2到2.0的迁移指南_蓝黑墨水的博客-CSDN博客

// SDL.cpp : 此文件包含 "main" 函数。程序执行将在此处开始并结束。
//

#include <iostream>
extern "C"
{
#include "SDL.h"
#include "SDL_main.h"
};
int main()
{
    SDL_Surface* pHello = nullptr;
    SDL_Window * pScreen = nullptr;
    SDL_Renderer* pRenderer = nullptr;
    SDL_Texture* pTexture = nullptr;
    bool bQuit = false;

    SDL_Init(SDL_INIT_EVERYTHING);

    pScreen = SDL_CreateWindow("SDL_Test", SDL_WINDOWPOS_CENTERED, SDL_WINDOWPOS_CENTERED, 640, 480, SDL_WINDOW_SHOWN);
    // 全屏
    //pScreen = SDL_CreateWindow("SDL_Test", SDL_WINDOWPOS_CENTERED, SDL_WINDOWPOS_CENTERED, 0, 0, SDL_WINDOW_FULLSCREEN_DESKTOP);

    if (pScreen == nullptr)
    {
        goto Exit;
    }
    pHello = SDL_LoadBMP("hello.bmp");
    if (pHello == nullptr)
    {
        goto Exit;
    }
    pRenderer = SDL_CreateRenderer(pScreen, -1, 0);
    
    pTexture = SDL_CreateTextureFromSurface(pRenderer, pHello);

    // 清空渲染器
    SDL_RenderClear(pRenderer);

    // 将材质放入渲染器
    SDL_RenderCopy(pRenderer, pTexture, nullptr, nullptr);
    
    SDL_RenderPresent(pRenderer);

    SDL_Event event;
    while (!bQuit)
    {
        SDL_WaitEvent(&event);
        switch (event.type)
        {
        case SDL_QUIT:
            bQuit = true;
        default:
            break;
        }
    }
    SDL_ShowSimpleMessageBox(SDL_MESSAGEBOX_INFORMATION, u8"提示", u8"即将退出", pScreen);
Exit:
    if (pTexture)
    {
        SDL_DestroyTexture(pTexture);
    }
    if (pHello)
    {
        SDL_FreeSurface(pHello);
    }
    if (pRenderer)
    {
        SDL_DestroyRenderer(pRenderer);
    }

    if (pScreen)
    {
        SDL_DestroyWindow(pScreen);
    }
    SDL_Quit();
    return 0;
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值