SDL3_API分类参考_初始化与退出(CategoryInit)

2026-3-6 / 0 评论 / 7 阅读

初始化与退出(CategoryInit)

所有 SDL 程序在开始使用该库之前都需要先初始化它。

几乎所有程序都可以在启动时简单调用 SDL_Init() 函数,
并通过少量标志位指定要启用的子系统。这些标志位的作用是确保 SDL 不会尝试去访问
你并不打算使用的操作系统底层组件。例如,你可能使用 SDL 处理视频和输入,
但选择第三方库处理音频,这种情况下只需省略
SDL_INIT_AUDIO 标志位,就能确保第三方音频库获得完全的控制权。

大多数应用程序在终止时应调用 SDL_Quit()。该函数会清理(几乎)所有 SDL 分配的资源,
尤为重要的是,如果你此前为游戏修改了显示器分辨率,它会确保分辨率恢复到用户预期的状态。

强烈建议 SDL3 应用程序在启动时调用
SDL_SetAppMetadata() 来填充程序的相关信息。
这一步完全可选,但能带来一些细节上的优化(比如可为 macOS 菜单提供「关于」对话框、
在系统音频混音器中显示应用名称等)。如果想要提供大量应用信息,
可使用更详细的 SDL_SetAppMetadataProperty() 函数。

函数

数据类型

结构体

  • (无)

枚举

  • SDL_AppResult - 定义应用程序回调函数的返回结果类型

  • (无)

补充:SDL 初始化的 FreeBASIC 示例代码

#include "SDL3/SDL.bi"
#include "SDL3/SDL_main.bi"

Function SDL_main (argc As Integer, argv As ZString Ptr) As Integer
    ' 初始化 SDL 视频和输入子系统
    Dim As Integer initResult = SDL_Init(SDL_INIT_VIDEO Or SDL_INIT_INPUT)
    If initResult < 0 Then
        Print "SDL 初始化失败: " & *SDL_GetError()
        Return 1
    End If

    ' 设置应用元数据
    SDL_SetAppMetadata("我的SDL应用", "1.0.0", "我的公司")

    ' 检查视频子系统是否初始化成功
    Dim As Uint32 wasInit = SDL_WasInit(SDL_INIT_VIDEO)
    If wasInit = SDL_INIT_VIDEO Then
        Print "视频子系统已初始化"
    End If

    ' 应用程序核心逻辑写在这里

    ' 退出 SDL,清理资源
    SDL_Quit()
    Return 0
End Function

评论一下?

OωO
取消