SDL窗口创建以及简单显示(1)

这篇具有很好参考价值的文章主要介绍了SDL窗口创建以及简单显示(1)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

 项目创建步骤

 1. 使用Qt Creator创建一个C项目

 2. 将SDL库文件放到源文件目录下

SDL窗口创建以及简单显示(1),FFmpeg,ffmpeg

 在项目pro文件中添加库文件

win32{
	INCLUDEPATH += $$PWD/SDL2-2.0.10/include
	LIBS += $$PWD/SDL2-2.0.10/lib/x86/SDL2.lib
}

 使用SDL创建一个窗口

#include <stdio.h>

#include <SDL.h>

#undef main    // 先取消main函数(因为SDL内部使用了main函数)
int main()
{
    // 创建一个SDL_VIDEO窗口
    SDL_Window* window = NULL;
    SDL_Init(SDL_INIT_VIDEO);
    window = SDL_CreateWindow("Title",
                              SDL_WINDOWPOS_UNDEFINED,       // 默认x y 显示到窗口中间
                              SDL_WINDOWPOS_UNDEFINED,
                              640,
                              480,
                              SDL_WINDOW_OPENGL | SDL_WINDOW_RESIZABLE);// 设置窗口属性
    if(!window)
    {
        printf("Can't create window, err:%s\n", SDL_GetError());
        return 666;
    }

    SDL_Delay(5000);                // 延迟5000ms
    SDL_DestroyWindow(window);      // 销毁窗口
    SDL_Quit();                     // 释放资源

    return 0;
}

运行效果

 SDL窗口创建以及简单显示(1),FFmpeg,ffmpeg

SDL简单显示案例

#include <stdio.h>
#include <SDL.h>

#undef main
int main()
{
    SDL_Window* window = NULL;          // 窗口
    SDL_Renderer* renderer = NULL;      // 渲染器
    SDL_Texture* texture = NULL;        // 纹理

    SDL_Init(SDL_INIT_VIDEO);

    // 创建窗口
    window = SDL_CreateWindow("Window Title",
                              SDL_WINDOWPOS_UNDEFINED,
                              SDL_WINDOWPOS_UNDEFINED,
                              640,
                              480,
                              SDL_WINDOW_OPENGL | SDL_WINDOW_RESIZABLE);
    if(NULL == window)
    {
        printf("Create Window error: %s\n", SDL_GetError());
        return -1;
    }

    // 创建渲染器(一个窗口可有多个渲染器)
    renderer = SDL_CreateRenderer(window, -1, 0);
    if(NULL == renderer)
    {
        printf("Create Renderer error: %s\n", SDL_GetError());
        // 销毁窗口,释放资源
        SDL_DestroyWindow(window);
        SDL_Quit();
        return -1;
    }

    // 基于渲染器创建纹理
    texture = SDL_CreateTexture(renderer,
                                SDL_PIXELFORMAT_RGBA8888,
                                SDL_TEXTUREACCESS_TARGET,
                                640,
                                480);
    if(NULL == texture)
    {
        printf("Create Texture error: %s\n", SDL_GetError());
        // 销毁渲染器 窗口 释放资源
        SDL_DestroyRenderer(renderer);
        SDL_DestroyWindow(window);
        SDL_Quit();
        return -1;
    }

    int showCnt = 0;    // 显示次数
    int run = 1;        // 循环退出条件
    SDL_Rect rect;      // 定义一个SDL矩形
    rect.w = 50;
    rect.h = 50;

    while(run)
    {
        // 随机rect的位置
        rect.x = rand() % 600;
        rect.y = rand() % 400;

        // 设置渲染目标为纹理
        SDL_SetRenderTarget(renderer, texture);
        // 设置渲染绘制颜色
        SDL_SetRenderDrawColor(renderer, 255, 0, 255, 255);
        // 刷新渲染
        SDL_RenderClear(renderer);

        // 设置渲染绘制颜色
        SDL_SetRenderDrawColor(renderer, 0, 255, 0, 255);
        // 绘制矩形
        SDL_RenderDrawRect(renderer, &rect);
        // 绘制填充矩形
        SDL_RenderFillRect(renderer, &rect);

        // 恢复渲染目标为窗口
        SDL_SetRenderTarget(renderer, NULL);
        SDL_RenderCopy(renderer, texture, NULL, NULL);

        // 显示纹理
        SDL_RenderPresent(renderer);
        SDL_Delay(300);

        if(showCnt++ >= 30)
            run = 0;
    }

    // 销毁 纹理 渲染器 窗口,释放资源
    SDL_DestroyTexture(texture);
    SDL_DestroyRenderer(renderer);
    SDL_DestroyWindow(window);
    SDL_Quit();

    return 0;
}

SDL窗口创建以及简单显示(1),FFmpeg,ffmpeg文章来源地址https://www.toymoban.com/news/detail-719466.html

到了这里,关于SDL窗口创建以及简单显示(1)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • ffmpeg与SDL下载及VScode上相应的编程环境配置踩坑(windows系统)

    注:本教程默认您已经配置好vscode的C++开发环境,如果没有,请先看我的另一篇文章:https://blog.csdn.net/qq_45807140/article/details/112862592 选择ffmpeg4.4版本,这个版本似乎是一个承前启后的版本,兼容了旧的接口,能运行雷神的代码 下载方法: 进入官网,选择Windows builds by BtbN,从

    2023年04月08日
    浏览(42)
  • 基于 FFmpeg 的跨平台视频播放器简明教程(五):使用 SDL 播放视频

    基于 FFmpeg 的跨平台视频播放器简明教程(一):FFMPEG + Conan 环境集成 基于 FFmpeg 的跨平台视频播放器简明教程(二):基础知识和解封装(demux) 基于 FFmpeg 的跨平台视频播放器简明教程(三):视频解码 基于 FFmpeg 的跨平台视频播放器简明教程(四):像素格式与格式转换

    2024年02月12日
    浏览(62)
  • 音视频项目—基于FFmpeg和SDL的音视频播放器解析(二十一)

    介绍 在本系列,我打算花大篇幅讲解我的 gitee 项目音视频播放器,在这个项目,您可以学到音视频解封装,解码,SDL渲染相关的知识。您对源代码感兴趣的话,请查看基于FFmpeg和SDL的音视频播放器 如果您不理解本文,可参考我的前一篇文章音视频项目—基于FFmpeg和SDL的音视

    2024年02月02日
    浏览(70)
  • 基于 FFmpeg 的跨平台视频播放器简明教程(六):使用 SDL 播放音频和视频

    基于 FFmpeg 的跨平台视频播放器简明教程(一):FFMPEG + Conan 环境集成 基于 FFmpeg 的跨平台视频播放器简明教程(二):基础知识和解封装(demux) 基于 FFmpeg 的跨平台视频播放器简明教程(三):视频解码 基于 FFmpeg 的跨平台视频播放器简明教程(四):像素格式与格式转换

    2024年02月13日
    浏览(56)
  • [音视频] sdl 渲染到外部创建的窗口上

    SDL_CreateWindowFrom # 在外部窗口上创建窗口 其他 api 调用,按照之前的

    2024年02月10日
    浏览(49)
  • SDL2 简明教程(二):创建一个空的窗口

    SDL2 简明教程(一):使用 Cmake 和 Conan 构建 SDL2 编程环境 SDL2 简明教程(二):创建一个空的窗口 在上一篇文章中,我们了解了通过 CMake + Conan 引入 SDL2 库进行编程。今天我们继续 SDL2 教学,学习如何创建一个空的窗口。 创建空窗口非常简单,只需仅仅几行代码: 上述代码

    2023年04月08日
    浏览(30)
  • 『FFmpeg学习笔记』MAC系统电脑安装FFmpeg以及使用

    MAC系统电脑安装FFmpeg

    2024年04月16日
    浏览(46)
  • Vue显示FFmpeg推的流

    小弟的另一篇文章: FFmpeg和rtsp服务器搭建视频直播流服务-CSDN博客 1、拉取rtsp摄像头流  2、推视频的rtmp流 3、推hls的视频流  4、推hls视频流 1、代码:https://github.com/caip1299920300/Vue-video-hls  2、修改的地方: 3、配置ngnix,用于解决vue的跨域问题 参考:Ubuntu系统下Nginx安装_ub

    2024年02月07日
    浏览(31)
  • ffmpeg 命令的简单使用

    ffmpeg命令是在windows端使用的,使用前,需要先下载对应的 exe文件 访问FFmpeg官网的下载地址(https://www.gyan.dev/ffmpeg/builds/)下载对应的压缩包,解压后即可使用 ffmpeg.exe的使用 ffmpeg命令可以转化各种格式的多媒体文件。 按照功能分类可以分为如下常用几种类型 信息查询部分

    2023年04月24日
    浏览(28)
  • ffmpeg的使用不简单

    ffmpeg功能强大,它的使用实在是不简单。看看它随带的使用说明有多少?能不能看懂? 应该怎样使用?怎样灵活使用? Universal media converter usage: ffmpeg [options] [[infile options] -i infile]... {[outfile options] outfile}... Getting help:     -h      -- print basic options     -h long -- print more options

    2024年03月18日
    浏览(31)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包