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++就找挨踢零声,加入挨踢零声,面试不挨踢!

相关推荐
萝卜兽编程19 分钟前
优先级队列
c++·算法
珹洺2 小时前
C语言数据结构——详细讲解 双链表
c语言·开发语言·网络·数据结构·c++·算法·leetcode
孙同学要努力2 小时前
C++知识整理day1——前置基础知识整理(命名空间、输入输出、函数重载、引用)
开发语言·c++
沐泽Mu2 小时前
嵌入式学习-C嘎嘎-Day05
开发语言·c++·学习
几窗花鸢2 小时前
力扣面试经典 150(下)
数据结构·c++·算法·leetcode
Beau_Will2 小时前
数据结构-树状数组专题(1)
数据结构·c++·算法
hunandede3 小时前
av_image_get_buffer_size 和 av_image_fill_arrays
c++
怀澈1224 小时前
高性能服务器模型之Reactor(单线程版本)
linux·服务器·网络·c++
chnming19875 小时前
STL关联式容器之set
开发语言·c++
威桑5 小时前
MinGW 与 MSVC 的区别与联系及相关特性分析
c++·mingw·msvc