platform/:7 个平台后端

每个平台目录含 detect.py(SCons 插件,角色见 build-system)+ SCsub + 平台代码 + export/(导出预设)。

平台说明
androidcan_build 检查 ANDROID_SDK;Gradle 导出
iosXcode 工程导出
linuxbsd入口 godot_linuxbsd.cpp(调用 Main 静态类)
macos.app bundle 导出
visionosApple 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
windowsPE 导出,含图标资源处理

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_logger
  • windows/:同构(winsock、Windows 线程等)
  • 其他:accesskit/(无障碍)、sdl/(SDL 输入/手柄集成)、backtrace/

相关