案例一:创建一个窗口
#include<SDL2/SDL.h>
#include<stdio.h>
#define SCREEN_WIDTH 640 //横向像素个数
#define SCREEN_HEIGHT 480 //纵向像素个数
//将printf重定向到stderr
#define printf(...) fprintf(stderr,__VA_ARGS__)
//必须严格按照这种格式定义main函数,否则会出错
int main(int argc, char* argv[])
{ //初始化SDL(视频)并判断是否成功
if (SDL_Init(SDL_INIT_VIDEO) < 0)
{
//若失败,输出错误信息
printf("SDL_Init error: %s\n", SDL_GetError());
//直接退出整个程序
return -1;
}
//创建窗口
SDL_Window* window = SDL_CreateWindow(
"SDL2教程范例",//窗口标题(支持UTF-8,但是必须将你的源文件也保存为UTF-8)
SDL_WINDOWPOS_CENTERED, SDL_WINDOWPOS_CENTERED,//SDL窗口默认位置(指定一个偏移量或居中)
SCREEN_WIDTH, SCREEN_HEIGHT,//窗口大小
SDL_WINDOW_SHOWN | SDL_WINDOW_VULKAN
);
//判断窗口是否创建成功
if (!window)
{
printf("SDL_CreateWindow error: %s\n", SDL_GetError());
return -1;
}
//创建一个 surface,直接将整个屏幕当作一个 surface 处理
SDL_Surface* screenSurface = SDL_GetWindowSurface(window);
if (!screenSurface)
{
printf("SDL_GetWindowSurface error: %s", SDL_GetError());
return -1;
}
//向 surface 填充颜色
SDL_FillRect(
screenSurface,
NULL,
SDL_MapRGB(
screenSurface->format,//暂不研究
0xFF, 0x00, 0x00//#FF0000 红色
)
);
//交换缓冲区
SDL_UpdateWindowSurface(window);
//延迟10秒钟
SDL_Delay(10000);
//销毁窗口
SDL_DestroyWindow(window);
//退出SDL
SDL_Quit();
return 0;
}
运行结果
