在上一篇文章《SDL3 入门(1):Hello, SDL3!》中我们已经利用 SDL 的日志接口实现了简单的字符串输出,实际上是解决了开发环境搭建问题,接下来我们将在已有代码的基础上继续开发,实现第一个窗口的创建和背景色绘制。
初始化
首先设置日志输出级别:
SDL_SetLogPriorities(SDL_LOG_PRIORITY_VERBOSE);
因为还是开发阶段所以我们将输出日志级别设置为最低的 VERBOSE,这样所有的日志都会输出,有助于我们观察 SDL 的运行情况,出现错误时可以得到尽量详细的出错信息,有助于我们快速定位问题。
接下来初始化 SDL 库,参数 SDL_INIT_VIDEO
指定初始化的子系统为视频系统:
if (!SDL_Init(SDL_INIT_VIDEO)) {
SDL_Log("SDL_Init failed: %s", SDL_GetError());
return -1;
}
实际上这一步可以省略,因为在调用 SDL API 时其内部会自行检查和初始化所需使用的子系统。比如接下来要使用的 SDL_CreateWindow
函数,内部有这样的代码:
if (!_this) {
/* Initialize the video system if needed */
if (!SDL_Init(SDL_INIT_VIDEO)) {
return NULL;
}
...
}
其中 _this
是视频子系统初始化完成后设置的全局变量,声明如下:
static SDL_VideoDevice *_this = NULL;
虽然不是必须的,但是我们仍然建议调用 SDL_Init
对主要用到的子系统进行显式初