相关函数
- 包含头文件
#include<SDL.h>
- 相关函数
初始化SDL
//初始化SDL
SDL_Init(SDL_INIT_VIDEO);
//退出SDL
SDL_Quit();
创建窗口的两种方法
//创建窗口,指定窗口一些属性,返回窗口句柄
SDL_CreateWindow(title,x,y,w,h,SDL_WINDOW_SHOWN|SDL_WINDOW_BORDER);
//由一个已存在的窗口创建窗口
SDL_CreateWindowForm(hwnd);
到现在为止窗口已经创建,但不会显示出来。创建窗口后需要将窗口放到渲染器中,渲染器将其输出到渲染驱动层。
创建窗口是在内存中生成一个窗口,显示需要将其推到显卡上;显卡通过驱动将其投影到屏幕上。
需要创建渲染器
SDL_Renderer * SDLCALL SDL_CreateRenderer(SDL_Window * window, int index, Uint32 flags);
//清空渲染器,防止上一次的残留数据一起输出出去,影响画面显示
int SDLCALL SDL_RenderClear(SDL_Renderer * renderer);
//将数据推到相应引擎上,引擎将数据拷贝到驱动上,驱动将数据投影到屏幕
void SDLCALL SDL_RenderPresent(SDL_Renderer * renderer);
向渲染器中设置颜色
//Set the color used for drawing operations
int SDLCALL SDL_SetRenderDrawColor(SDL_Renderer * renderer,
Uint8 r, Uint8 g, Uint8 b,
Uint8 a);
SDL事件基本原理
- SDL将所有事件放在一个队列中
- SDL事件种类
//窗口事件
SDL_WindowEvent
//键盘事件
SDL_KeyboardEvent
//鼠标事件
SDL_MouseMotionEvent
//自定义事件
- SDL事件处理
- SDL_PollEvent 轮询处理,每隔一段时间处理一次
- SDL_WaitEvent 等待事件处理,处理及时不占用过多CPU
//定义一个事件
SDL_Event event;
SDL_WaitEvent (&event);
纹理渲染
- 基本概念
- 纹理:描述图像的基本信息(以画的一条线为例子,该线包含多个rgb/yuv数据点,而纹理包含这条线的起始和终点位置以及色彩的渐变过程)
- 使用纹理的优点:
数据量小,占主内存少;
将纹理数据传给显卡,可利用显卡硬件加速计算数据并渲染。
- SDL渲染基本过程
内存图像包含图片的所有信息,渲染器将图片的描述信息抽取出来形成纹理,将纹理送到显卡上渲染展示出来。
- 纹理相关函数
//创建纹理,int access指纹理类型分为一般和流式,视频为流式
SDL_Texture * SDLCALL SDL_CreateTexture(SDL_Renderer * renderer,
Uint32 format,
int access, int w,
int h);