首页
学习
活动
专区
圈层
工具
发布

使用SDL2显示一张图片,SDL2上手贴

通常使用GUI绘图,大概是这样一个逻辑,请看伪代码: 准备画板(); 画一个点(x,y); 画一条线(x1,y1,x2,y2,c); 画一个圆(x,y,r,c); 贴一张图(x,y,w,h,bmp);...结束绘图(); 在伪代码的过程中,每执行一条命令,比如画了线,在屏幕上就会看到结果,然后那条线也会一直存在,直到程序清掉它或者其它屏幕元素遮住它。...显而易见,从绘图哲学的角度看,SDL/OpenGL/Direct3D所采用的绘图方式,显然更适合3D类绘图、动画的加速,那么这种技术对平面绘图,比如就是单纯的视频播放,是如何加速的呢?...所以3D绘图对二维的加速实际上就是在屏幕上绘制一个全屏幕的平面,然后把二维图像当做材质贴图上去的结果。你看上面SDL代码中载入的png图片,实际最后就是当做一副材质(texture)来使用了。...更具体一点说,比如你看到屏幕上的菜单、窗口、对话框、按钮、文字,几乎都是这些界面管理器来实现的,我们点了一个按钮、拖动一个窗口,都会产生事件,这些事件会由这些界面管理器收集、分类、排序,调用响应用户响应函数做出最后的处理

2.3K70

SDL简介

SDL SDL(Simple DirectMedia Layer)是一套开放源代码的跨平台多媒体开发库,使用C语言写成。...SDL在结构上是将不同操作系统的库再封装成相同的函数,例如SDL在Windows平台上是DirectX的封装,而在使用X11的平台上(包括Linux),SDL则是与Xlib库沟通来输出图像。...虽然SDL本身是使用C语言写成,但是它几乎可以被所有的编程语言所使用,例如:C++、Perl、Python(借由pygame库)、Pascal、Java等等。...但更高级的绘图功能或是音效功能则需搭配OpenGL和OpenAL等API来实现。 SDL 按照 API 的类型可以分为几个部分: Basics ,用于系统初始化、错误处理、日志打印等基本功能。...目前,SDL的最新版本是SDL2,它与SDL1在使用有一些不同,它支持了硬件加速等新的能力,因此我们应学习SDL2的使用。 本系列教程主要包含对国外优秀教程的翻译,同时也会包含博主本人的一些总结文章

2.9K30
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    FFmpeg开发笔记(三十九)给Visual Studio的C++工程集成FFmpeg

    开发桌面程序也是很常见的,下面就介绍如何在Visual Studio的C++工程中集成FFmpeg库和SDL2库。...在弹出的属性页面中,依次选择左侧的列表项:配置属性→VC++目录,并在属性页面右侧的列表项中依次选择:常规→外部包含目录→编辑。...在弹出的附加库目录窗口中添加下列库文件目录(具体路径根据自己电脑上的sdl2安装路径调整):E:\msys64\usr\local\ffmpeg\libE:\msys64\usr\local\sdl2\...回到Visual Studio 2022的主界面,在左侧的代码编辑窗口中填写下面的FFmpeg测试代码,主要是调用FFmpeg框架的av_log函数来输出“Hello World”。...Visual Studio就开始编译测试程序,编译完毕弹出控制台窗口输出了一行日志“Hello World”,说明成功在Visual Studio的C++工程中集成了FFmpeg库。

    1.9K10

    云课五分钟-03第一个开源游戏复现-贪吃蛇

    文本 蓝桥ROS机器人之绚丽贪吃蛇 如何在Linux下使用 DungeonRush-master 开源游戏 在Linux下使用DungeonRush-master开源游戏,您可以按照以下步骤进行操作:...file(GLOB SRC src/*.c) 使用GLOB函数将src目录下的所有.c源文件存储到SRC变量中。...从你给出的文本中,我看到你提供了关于“DungeonRush”游戏的更多详细信息,包括如何在openSUSE和MacOS上安装依赖项,以及如何编译该游戏。...编译游戏: 使用CMake进行构建和编译。在终端中执行以下命令: mkdir build cd build cmake .....运行游戏: 编译完成后,你可以在“build”目录中找到可执行文件。在终端中执行以下命令来运行游戏: ./dungeon_rush 游戏应该开始运行,你可以使用键盘控制角色移动,进行游戏。

    93030

    【程序源代码】《金庸群侠传》C++复刻版

    关键字:《金庸群侠传》C++复刻版 这是一个以SDL2为基础实现的2D游戏框架,同时相当于提供了一个使用该框架制作DOS游戏《金庸群侠传》移植版的范例。...Windows下可以使用Visual Studio编译,其他系统下可以在src目录使用CMake生成Makefile,使用GCC或Clang编译,需至少支持C++14。...安装说明 架构的简单说明 一:公共部分 1、Engine封装了一套SDL2的主要实现,与SmallPot类似。如更换绘图引擎,则只需修改此部分即可。...对应在背景中执行,如何画自身,如何处理事件,进入时的处理,退出时的处理。一般来说,衍生类应重写这些函数。其中每个元素可以包含数个子元素,在绘图时子节点也会被自动一一绘出。...在Linux下编译时则应优先考虑使用系统的包管理器(例如apt等)自动安装的库,在Mac下可以使用homebrew来安装。

    2.3K01

    【程序源代码】《金庸群侠传》C++复刻版

    关键字:《金庸群侠传》C++复刻版 这是一个以SDL2为基础实现的2D游戏框架,同时相当于提供了一个使用该框架制作DOS游戏《金庸群侠传》移植版的范例。...Windows下可以使用Visual Studio编译,其他系统下可以在src目录使用CMake生成Makefile,使用GCC或Clang编译,需至少支持C++14。...架构的简单说明 一:公共部分 1、Engine封装了一套SDL2的主要实现,与SmallPot类似。如更换绘图引擎,则只需修改此部分即可。 2、Save中对所有数据进行了封装,可以较为方便地调用。...对应在背景中执行,如何画自身,如何处理事件,进入时的处理,退出时的处理。一般来说,衍生类应重写这些函数。其中每个元素可以包含数个子元素,在绘图时子节点也会被自动一一绘出。...在Linux下编译时则应优先考虑使用系统的包管理器(例如apt等)自动安装的库,在Mac下可以使用homebrew来安装。

    3.3K00

    一文解锁随心所欲绘图:不要被ggplot2洗脑了,我们只要grid!!!

    视图窗口(Viewports): 视图窗口是网格图形中的一个关键概念,表示绘图中的较小工作空间; 通过视图窗口,用户可以在绘图的不同子空间中进行导航和绘图操作。...1.创建视图窗口 创建和使用视图窗口:使用viewport函数创建新的视图窗口,进入视图窗口后,可以绘制图形对象(grobs),然后返回到主绘图区域或进入另一个视图窗口继续绘图。...,其中1表示绘图区域一边的完整宽度(在本节后面,我们将讨论如何使用不同的坐标系统)。...,网格图形对象可能会形成一个复杂的视图窗口和图形对象(grobs)的树形结构,可以使用grid.ls函数列出当前图形设备中绘图的所有元素。...(grobs),而不是 grid 包中的低级工具,后者用于创建和编辑绘图的特定低级元素。

    71600

    没有电脑也能数据分析,安卓运行Jupyter notebook 操作指南

    近20年来,在TIOBE编程语言排行榜中,C、C++和Java一直排在前3位,远远领先于其他组件。而Python作为近来广受大家喜爱的编程语言,终于在2018年9月份首登前三的宝座。...而在Python的使用过程中,最受欢迎的可谓是Jupyter notebook 了,因为它具有以下众多优点: 1 极其适合数据分析( 想象一下如下混乱的场景:你在终端中运行程序,可视化结果却显示在另一个窗口中...,包含函数和类的脚本存在其他文档中,更可恶的是你还需另外写一份说明文档来解释程序如何执行以及结果如何); 2 支持多语言; 3 分享便捷(网页形式、GitHub天然的支持,还可以导出为PDF等格式);...内置的C,C ++甚至是由ndn3m4设计的Fortran编译器,ndn3m4是C4droid的作者,专门用于Pydroid3, 它允许Pydroid 3从pip构建任何库,即使它使用的是本机代码。...您还可以从命令行构建和安装依赖项。 Cython支持。 带断点和监视的PDB调试器。 带有闪亮的新SDL2后端的Kivy图形库。

    4.3K30

    没有电脑也能数据分析,安卓运行Jupyter notebook 操作指南

    近20年来,在TIOBE编程语言排行榜中,C、C++和Java一直排在前3位,远远领先于其他组件。而Python作为近来广受大家喜爱的编程语言,终于在2018年9月份首登前三的宝座。...而在Python的使用过程中,最受欢迎的可谓是Jupyter notebook 了,因为它具有以下众多优点: 1 极其适合数据分析( 想象一下如下混乱的场景:你在终端中运行程序,可视化结果却显示在另一个窗口中...,包含函数和类的脚本存在其他文档中,更可恶的是你还需另外写一份说明文档来解释程序如何执行以及结果如何); 2 支持多语言; 3 分享便捷(网页形式、GitHub天然的支持,还可以导出为PDF等格式);...内置的C,C ++甚至是由ndn3m4设计的Fortran编译器,ndn3m4是C4droid的作者,专门用于Pydroid3, 它允许Pydroid 3从pip构建任何库,即使它使用的是本机代码。...您还可以从命令行构建和安装依赖项。 Cython支持。 带断点和监视的PDB调试器。 带有闪亮的新SDL2后端的Kivy图形库。

    2.8K20

    【STM32H7的DSP教程】第4章 Matlab简易使用之脚本文件

    4.1 初学者重要提示 4.2 Matlab的脚本文件.m的使用 4.3 Matlab中的条件和循环函数 4.4 绘图功能 4.5 总结 4.1   初学者重要提   学习本章节前,务必优先学习第3章。...4.2   Matlab的脚本文件.m的使用 在matlab上创建和使用.m文件跟在MDK或者IAR上面创建和使用.C或者.ASM文件是一样的。...但在matlab中使用比在C中使用更加随意。  ...下面我们在命令窗口中实现如下函数功能: t = 0:pi/10:2*pi; plot(exp(i*t),'-o') axis equal 显示效果如下:   在当前的绘图中添加新的plot函数 使用函数...hold on即可实现,这个函数我们在上一章节中已经使用过,作用就是在当前绘图的基础上加上一个新的绘图。

    74710

    【STM32F407的DSP教程】第4章 Matlab简易使用之脚本文件

    4.1 初学者重要提示 4.2 Matlab的脚本文件.m的使用 4.3 Matlab中的条件和循环函数 4.4 绘图功能 4.5 总结 4.1   初学者重要提   学习本章节前,务必优先学习第3章。...4.2   Matlab的脚本文件.m的使用 在matlab上创建和使用.m文件跟在MDK或者IAR上面创建和使用.C或者.ASM文件是一样的。...但在matlab中使用比在C中使用更加随意。  ...下面我们在命令窗口中实现如下函数功能: t = 0:pi/10:2*pi; plot(exp(i*t),'-o') axis equal 显示效果如下: 在当前的绘图中添加新的plot函数 使用函数hold...on即可实现,这个函数我们在上一章节中已经使用过,作用就是在当前绘图的基础上加上一个新的绘图。

    71810

    【STM32F429的DSP教程】第4章 Matlab简易使用之脚本文件

    4.1 初学者重要提示 4.2 Matlab的脚本文件.m的使用 4.3 Matlab中的条件和循环函数 4.4 绘图功能 4.5 总结 4.1   初学者重要提   学习本章节前,务必优先学习第3章。...4.2   Matlab的脚本文件.m的使用 在matlab上创建和使用.m文件跟在MDK或者IAR上面创建和使用.C或者.ASM文件是一样的。...但在matlab中使用比在C中使用更加随意。  ...下面我们在命令窗口中实现如下函数功能: t = 0:pi/10:2*pi; plot(exp(i*t),'-o') axis equal 显示效果如下:   在当前的绘图中添加新的plot函数 使用函数...hold on即可实现,这个函数我们在上一章节中已经使用过,作用就是在当前绘图的基础上加上一个新的绘图。

    78530

    「SDL第二篇」窗口渲染

    前言 上一篇文章中我们对SDL作了简单的介绍,重点介绍了如何编译SDL以及如何使用它。在文章的最后我们留下了一个疑问,即虽然我们创建了窗口,但窗口却并没有真正显示出来。...今天我们就来看一看,如何才能让创建的窗口真正的显示出来。 渲染的基本流程 为什么我们上一课中创建了窗口,但它却并没有显示出来呢?...不过在使用SDL对窗口进行渲染之前,我们要先了解渲染的基本原理。 其基本原理是,首先创建一个window窗口,它是我们要渲染的目标。...void SDL_RenderPresent(SDL_Renderer* renderer) renderer: 上面创建的渲染器上下文 完整例子 我在第一课的代码上,添加了上面几个函数之后,大家可以看到一个全红色的窗口可以显示在我们的面前了...当然我们还可以在上面画一些图形,比如使用 SDL_RenderDrawLines() 函数在窗口中画一条直线。

    2K30

    原创 | 整理了38个Python游戏开发库

    它支持窗口、用户界面事件处理、操纵杆、OpenGL图形、加载图像和视频以及播放声音和音乐。pyglet支持在Windows、OS X和Linux上工作。...使用PyDark的目标是使其易于学习并集成到现有的pygame应用程序中。PyDark被设计为完全可定制和可伸缩的,允许开发人员继承基类并创建新的子类。...Pycap将PopCap游戏框架封装在一个超级友好的高级python界面中。使用Pycap,你可以开始构建漂亮的2D游戏,而无需安装编译器或学习c++。...它不依赖C代码,而是使用内置的CTypes模块与SDL2接口,并为常见的SDL2功能提供简单的Python类和包装。...Myrmidon的底线是开发人员应该只关注游戏对象的行为以及用户如何与它们交互。任何低级图形、窗口或输入处理应由Myrmidon全权负责。尽可能地隐藏这些信息,并允许您继续编写游戏。

    4.7K40

    FFmpeg开发笔记(八十一)FFmpeg代码对RTSP和RTMP的推流区别

    《FFmpeg开发实战:从零基础到短视频上线》一书的“10.2.2  FFmpeg向网络推流”介绍了如何使用FFmpeg代码向网络推送视频流,当时的例程采用了RTSP方式推流,在向RTSP地址时推流是正常的...,但向RTMP地址推流时出现了问题,下面就介绍了如何使用FFmpeg代码向RTMP地址推送视频流。...\n", dest_name);2、调用avformat_alloc_output_context2函数之后,还要依据推流地址的协议类型来决定是否接着调用avio_open函数打开输出流,对于RTSP地址而言不必调用.../file/2018.mp4 rtmp://127.0.0.1:1935/stream接着打开另一个MSYS窗口,同样进入该书第十章的源码目录chapter10,执行下面的编译命令。...gcc pullvideo.c -o pullvideo -I/usr/local/ffmpeg/include -L/usr/local/ffmpeg/lib -I/usr/local/sdl2/include

    70510

    SDL2安装指南

    SDL(Simple DirectMedia Layer)是一套开放源代码的跨平台多媒体开发库,使用C语言写成。...下面主要介绍一下在Windows下搭建SDL2开发环境的过程。 下载 下载自SDL官网,在Development Libraries中选择相应的版本。...我这里选择的是Windows平台下的Visual C++版,因为我接下来使用的环境是VS2013。...VS中的项目配置 SDL2说白了其实只是一个C语言库,因此配置他就跟配置其他任意的库一样,主要分为三步: 一、包含必需的头文件和库文件 因为我们需要能够include进SDL2的头文件,并且找到对应的实现代码...而按照微软一贯的保姆式作风,在VS中并不需要我们手动输入编译指令,只需要修改一下编译配置,然后就能直接编译了。

    6K20

    Qt中国象棋一—— Qt 2D 绘图入门

    Qt中围绕着QGraphicsView、QGraphicsScene、QGraphicsItem类引入了一种全新的“图形视图”体系【了解概念即可,不作详细介绍】。——摘自C++ GUI Qt4编程。...一、坐标系统 在了解如何画出一个图形前,需要知道窗口部件的坐标系统。如图,左上角顶点是坐标原点(0,0),X轴向右为正,Y轴向下为正,默认每个像素占1×1大小的像素。...视口、窗口、世界矩阵等概念有兴趣的同志们可以深入了解下。 ? 二、画一条线段 在绘图设备上(一般是窗口部件上)绘图,需要重新实现Qt的绘图事件——paintEvent。...160, 230)); // 绘制直线 painter.drawLine(QPointF(0 ,0), QPointF(width() / 2, height() / 2)); } 在重新实现的事件函数中...三、画文本与画矩形 这次是绘图逻辑分离出来,然后在paintEvent(QPaintEvent *event)中调用。

    2.4K10
    领券