当前位置: 首页 > news >正文

SDL常用结构体和函数接口

1. 结构体

SDL_Window:SDL库中用于表示应用程序窗口的结构体。它封装了一个操作系统窗口的所有属性和功能,是创建图形用户界面的基础。通过创建一个SDL_Window,开发者可以定义窗口的初始大小、位置、是否全屏、是否具有边框等属性,并且它是与特定渲染上下文(SDL_Renderer)关联的起点

SDL_Renderer:渲染上下文的抽象,负责实际的图形绘制操作。它建立在SDL_Window之上,提供了渲染2D图形所需的一系列方法,包括设置颜色、清除屏幕、绘制线段、矩形等。不同的渲染器后端(如软件渲染或硬件加速渲染)可以通过此接口统一访问,使得开发者能够轻松地切换渲染方式而不必大幅修改代码

SDL_Texture:示一个经过优化的、可用于快速渲染的图像数据。它可以是从文件加载的位图、渲染目标(用于离屏绘制)、或者由像素数据创建的表面。与原始的SDL_Surface相比,SDL_Texture更适合高性能的图形渲染,尤其是在利用GPU加速的情况下。纹理可以绑定到渲染器上,并通过渲染器的函数进行绘制、缩放和旋转,而不需要直接操作像素数据

SDL_Rect:用来描述一个矩形区域。它包含四个整数成员变量:xy表示矩形左上角的坐标,w表示宽度,h表示高度。在SDL编程中,这个结构体被广泛应用于指定绘图的位置和尺寸,比如在调用SDL_RenderDrawRectSDL_RenderFillRect或设置剪辑区域等操作时都会用到。它是一个非常基础但极其重要的数据结构,对于处理2D空间中的几何布局至关重要。

2. 函数接口

SDL_Init:

SDL_CreateWindow:

这个函数用于创建一个窗口。它是开始使用SDL显示图形的起点。函数接受多个参数,包括窗口的标题、初始x和y位置、宽度、高度以及一些窗口标志(比如是否全屏、是否允许调整大小等)。创建窗口后,你可以获得一个SDL_Window*类型的指针,这个指针在后续的图形操作中用来引用这个窗口。例如:

SDL_Window* window = SDL_CreateWindow("My SDL Window", SDL_WINDOWPOS_UNDEFINED, SDL_WINDOWPOS_UNDEFINED, 800, 600, SDL_WINDOW_SHOWN);

SDL_CreateRenderer:创建一个与指定窗口关联的渲染上下文(Renderer)。渲染上下文负责处理所有绘图操作,参数包括窗口指针(SDL_Window*), 渲染驱动索引(-1为自动选择最佳),以及渲染器的 flags(比如 SDL_RENDERER_ACCELERATED 使用硬件加速)。

renderer = SDL_CreateRenderer(window, -1, 0);

SDL_CreateTexture:在给定的渲染上下文中创建一个新的纹理(Texture),纹理可以理解为用于渲染的图像数据。包括渲染器指针、纹理的格式、宽度、高度以及访问纹理的方式(如SDL_TEXTUREACCESS_STATIC)。

SDL_SetRenderTarget:设置当前渲染目标为指定的纹理,而不是默认的窗口 surface。这允许你将图形绘制到纹理上而不是直接绘制到屏幕上。

SDL_SetRenderDrawColor:设置后续绘图操作的绘制颜色。颜色由红、绿、蓝、alpha(透明度)四个分量组成

SDL_RenderClear:用当前设置的清除颜色填充整个渲染目标(通常是屏幕或一个纹理),清空之前的绘图内容准备新的绘制

‘SDL_RenderDrawRect:绘制一个矩形的边框

SDL_SetRenderDrawColor:设置渲染器的输出缩放因子,控制绘制内容的大小

SDL_RenderFillRect:填充一个矩形区域

SDL_RenderPresent:将渲染缓冲区的内容提交到屏幕上,即显示所有已经绘制的图形

SDL_Delay:

于让程序暂停指定的毫秒数。这是一个简单的方法来实现延迟或让CPU暂时休息,常用于简单的动画、帧率控制或者在某些操作之间插入等待时间例如,如果你想让程序暂停1秒:

SDL_Delay(1000);

SDL_DestroyWindow:

不再需要一个窗口时,应该使用SDL_DestroyWindow来释放与之关联的资源。这包括内存和其他系统资源。传递给这个函数的是之前通过SDL_CreateWindow获取的窗口指针

if (window != NULL) {SDL_DestroyWindow(window);
}

SDL_Quit:

用于关闭SDL库并清理所有内部资源。当你完成所有SDL相关的操作并准备结束程序时,应该调用它。它会关闭所有窗口、释放资源,并执行必要的清理工作以确保SDL库正确地退出。通常放在程序的最后:

SDL_Quit();

这是一条吃饭博客,由挨踢零声赞助。学C/C++就找挨踢零声,加入挨踢零声,面试不挨踢!

http://www.lryc.cn/news/405397.html

相关文章:

  • 【数据结构】AVL树(图文解析 + 代码实现)
  • HTML(六)——HTML表单和框架
  • 【Qt 】JSON 数据格式详解
  • 路由表与IP数据报转发:基础小白指南
  • python—selenium爬虫
  • Mysql - 索引
  • 从课本上面开始学习的51单片机究竟有什么特点,在现在的市场上还有应用吗?
  • uniapp中出现Uncaught runtime errors
  • 数字信号处理基础知识(二)
  • 人生低谷来撸C#--015 C# 属性(Property)
  • 面试题003:面向对象的特征——封装性
  • 森林防火,森林防火智能储水罐_鼎跃安全
  • 虚幻引擎,体积雾、体积光、镜头泛光
  • Python 机器学习求解 PDE 学习项目——PINN 求解二维 Poisson 方程
  • 微信小程序删除滑块 SwiperCell 自动收起 Van weapp van-swipe-cell 滑块自动收起 点击页面也自动收起滑块
  • 【vluhub】log4j注入漏洞 CVE-2021-44228
  • Redis核心技术与实战学习笔记
  • 力扣经典题目之->设计循环队列 的超详细讲解与实现
  • 【数据结构】排序算法——Lesson2
  • Ubuntu编译ffmpeg并添加cmake工程
  • Vue.js[组件(Component)]
  • 基于微信小程序+SpringBoot+Vue的校园自助打印系统(带1w+文档)
  • qt设置过滤器
  • 线上环境服务器CPU飙升排查
  • unity文字||图片模糊
  • 香薰学习笔记
  • iOS ------ weak的基本原理
  • 实时更新UI界面
  • 为什么Spring不推荐@Autowired用于字段注入
  • 【北京迅为】《i.MX8MM嵌入式Linux开发指南》-第三篇 嵌入式Linux驱动开发篇-第三十九章 Linux MISC驱动