platform/:7 个平台后端
每个平台目录含 detect.py(SCons 插件,角色见 build-system)+ SCsub + 平台代码 + export/(导出预设)。
| 平台 | 说明 |
|---|---|
android | can_build 检查 ANDROID_SDK;Gradle 导出 |
ios | Xcode 工程导出 |
linuxbsd | 入口 godot_linuxbsd.cpp(调用 Main 静态类) |
macos | .app bundle 导出 |
visionos | Apple Vision Pro(XR) |
web | 特殊:基于 Emscripten,can_build = WhereIs("emcc");选项 initial_memory/stack_size/javascript_eval/dlink_enabled(GDExtension 动态链接)/proxy_to_pthread;含 js/ JS 胶水;音频走 AudioWorklet(godot_audio.h),渲染仅 GLES(godot_webgl2.h,无 Vulkan);导出为 HTML+JS+WASM |
windows | PE 导出,含图标资源处理 |
platform/platform_builders.py、register_platform_apis.h 为公共件。
drivers/:底层驱动
drivers/SCsub 按平台/选项条件编译各子目录,最后 env.add_library("drivers", ...)。
图形(见 rendering)
vulkan/、d3d12/、metal/、gles3/、gl_context/(glad+EGL 上下文)、egl/
音频
| 驱动 | 平台 |
|---|---|
alsa/ | Linux(含 asound 动态加载垫片) |
pulseaudio/ | Linux 可选 |
coreaudio/ | macOS/iOS/visionOS(Apple 平台编入) |
wasapi/ | Windows 默认 |
xaudio2/ | Windows 备选(env["xaudio2"] 开关) |
MIDI:alsamidi/、coremidi/、winmidi/。驱动选择经 AudioDriverManager::initialize(idx)(main/main.cpp:3553)。
图像
png/:ImageLoaderPNG + ResourceSaverPNG(libpng 封装)——是 drivers/register_driver_types.cpp:44-54 里仅有的注册项(渲染/音频驱动不经此注册,分别走 Display/OS 与 AudioDriverManager)。
平台原语
unix/:os_unix、file_access_unix(+pipe)、dir_access_unix、net_socket_unix、ip_unix、thread_posix、syslog_loggerwindows/:同构(winsock、Windows 线程等)- 其他:
accesskit/(无障碍)、sdl/(SDL 输入/手柄集成)、backtrace/