目录
二、SDL2基本API介绍(1)
SDL_Init()
函数原型:
int SDL_Init(Uint32 flags)
参数:
SDL_INIT_TIMER:计时器子系统
SDL_INIT_AUDIO:音频子系统
SDL_INIT_VIDEO:视频子系统
SDL_INIT_JOYSTICK:操纵杆子系统
SDL_INIT_HAPTIC:触觉(力反馈)子系统
SDL_INIT_GAMECONTROLLER:控制器子系统
SDL_INIT_EVENTS:事件子系统
SDL_INIT_EVERYTHING:所有上述子系统
SDL_INIT_NOPRACHUTE:兼容性
返回值:
成功时为0,失败时为负错误代码;有关详细信息,请调用SDL_GetError()
函数作用:
初始化SDL库
SDL_Quit()
函数原型:
void SDL_Quit(void)
参数: 无
返回值: 无
函数作用:
清理所有初始化的子系统
SDL_CreateWindow()
函数原型:
SDL_Window *SDL_CreateWindow(const char *title, int x, int y, int w, int h, Uint32 flags)
参数:
title–窗口的标题,采用UTF-8编码
x–窗口的x位置,“SDL_WINDOWPOS_CENTERED”或“SDL_WINDOWPOS_UNDEFINED”`
y–窗口的y位置,“SDL_WINDOWPOS_CENTERED”或“SDL_WINDOWPOS_UNDEFINED”`
w–窗口的宽度,以屏幕坐标表示
h–窗口的高度,以屏幕坐标表示
flags–窗口状态属性标识,0,或一个或多个SDL_WindowFlags或一起
返回值:
返回创建的窗口或失败时返回NULL;有关详细信息,请调用SDL_GetError()
函数作用:
使用指定的位置、尺寸和标志创建窗口
SDL_DestroyWindow()
函数原型:
void SDL_DestroyWindow(SDL_Window *window)
参数:
window – 销毁的窗口
返回值: 无
函数作用:
销毁一个窗口。如果“window”为NULL,则在将SDL错误消息设置为“Invalid window”后,此函数将立即返回。请参见SDL_GetError()
SDL_CreateRenderer()
函数原型:
SDL_Renderer *SDL_CreateRenderer(SDL_Window *window, int index, Uint32 flags)
参数:
window–显示渲染的窗口
index–要初始化的渲染驱动程序的索引,或-1初始化第一个支持请求标志的驱动程序
flags–0,或一个或多个SDL_RenderFlags或一起
SDL_RENDERER_SOFTWARE: 渲染器使用软件加速
SDL_RENDERER_ACCELERATED: 渲染器使用硬件加速
SDL_RENDERER_PRESENTVSYNC: 和显示器的刷新率同步
SDL_RENDERER_TARGETTEXTURE: 渲染器支持渲染到纹理
PS:请注意,不提供任何标志会优先使用可用的SDL_RENDERER_ACCELERATED渲染器
返回值:
返回创建的渲染或失败时返回NUL;有关详细信息,请调用SDL_GetError()
函数作用:
为窗口创建二维渲染context
SDL_DestroyRenderer()
函数原型:
void SDL_DestroyRenderer(SDL_Renderer *renderer)
参数:
renderer – 销毁的渲染
返回值: 无
函数作用:
破坏窗口的渲染上下文并释放关联的纹理。如果`renderer`为NULL,则在将SDL错误消息设置为“Invalid renderer”后,此函数将立即返回。请参见SDL_GetError()。
SDL_PollEvent()
函数原型:
int SDL_PollEvent(SDL_Event *event)
参数:
event–要用队列中的下一个事件填充的SDL_event结构,或NULL
返回值:
1(如果有挂起的事件)或0(如果没有可用的事件)。
函数作用:
轮询当前挂起的事件。如果“event”不为NULL,则从队列中删除下一个事件,并将其存储在“event(事件)”指向的SDL_event结构中。返回的1指的是该事件,该事件立即存储在SDL event结构中,而不是要跟随的事件。如果“event”为NULL,那么如果队列中有事件,它只返回1,但不会将其从队列中删除。
SDL_GetError()
函数原型:
const char *SDL_GetError(void)
参数:无
返回值:
包含发生的特定错误信息的消息,如果自上次调用SDL_ClearError()以来没有设置错误消息,则为空字符串。只有当SDL函数发出错误信号时,该消息才适用。您必须检查SDL函数调用的返回值,以确定何时适当地调用SDL_GetError()。
函数作用:
检索有关当前线程上发生的最后一个错误的消息。在调用SDL_GetError()之前,可能会发生多个错误。只返回最后一个错误。只有当SDL函数发出错误信号时,该消息才适用。您必须检查SDL函数调用的返回值,以确定何时适当地调用SDL_GetError()。
示例程序
#include <stdio.h>
#include <SDL.h>
int main(int argc,char* argv[])
{
/*初始化SDL*/
SDL_Init(SDL_INIT_AUDIO);
/*创建窗口*/
SDL_Window* Win_1 = SDL_CreateWindow("hello",SDL_WINDOWPOS_CENTERED,SDL_WINDOWPOS_CENTERED,640,480,SDL_WINDOW_SHOWN);
if(Win_1 == NULL){
printf("SDL Create Window Error: %s \n",SDL_GetError());
return 1;
}
/创建渲染器*/
SDL_Renderer* Ren_1 = SDL_CreateRenderer(Win_1,-1,SDL_RENDERER_ACCELERATED | SDL_RENDERER_PRESENTVSYNC);
if(Ren_1 == NULL){
printf("SDL Create Rendre Error: %s \n",SDL_GetError());
return 1;
}
SDL_RenderPresent(Ren_1);
/*事件处理*/
int isquit = 0;
SDL_Event event;
while (!isquit)
{
while(SDL_PollEvent(&event)){
if(event.type == SDL_QUIT){
isquit = 1;
}
}
}
SDL_DestroyRenderer(Ren_1);
SDL_DestroyWindow(Win_1);
SDL_Quit();
}