Godot 引擎中的显示服务器系统为窗口管理、输入处理和平台特定功能提供了一个平台抽象层。它作为引擎与底层操作系统显示和输入能力之间的接口,使 Godot 应用程序能够跨不同平台一致运行。
本文档解释了显示服务器系统的架构和实现,包括:
有关在 Godot 项目中使用显示服务器 API 的信息,请参阅 Godot 官方文档。
显示服务器系统围绕一个基础的 DisplayServer 类构建,该类定义了一个通用接口,并为每个支持的操作系统提供特定于平台的实现。
来源
来源
每个平台实现根据底层平台的能力提供不同的功能集。应用程序可以使用 has_feature() 方法查询特定功能是否可用。
来源
显示服务器处理窗口创建、销毁和状态管理。每个窗口都会分配一个唯一的窗口 ID,用于在 API 调用中引用它。
每个平台实现都维护一个从窗口 ID 到特定于平台的窗口数据结构的映射。例如:
来源
来源
显示服务器从操作系统捕获输入事件,将其转换为 Godot 的输入事件格式,并分派给相应的处理程序。
来源
显示服务器管理不同的鼠标模式:
MOUSE_MODE_VISIBLE: 普通可见光标MOUSE_MODE_HIDDEN: 光标隐藏但正常移动MOUSE_MODE_CAPTURED: 光标被捕获,用于第一人称游戏等应用MOUSE_MODE_CONFINED: 光标被限制在窗口边框内MOUSE_MODE_CONFINED_HIDDEN: 光标被限制并隐藏来源
显示服务器提供跨平台的剪贴板功能。
来源
显示服务器提供有关可用显示器和屏幕的信息。
来源
来源
来源
显示服务器与渲染系统协同工作,以创建和管理渲染上下文。
来源
Windows 实现使用 Win32 API 来创建和管理窗口、捕获输入以及与操作系统进行交互。
来源
macOS 实现使用 Cocoa/AppKit 来创建和管理窗口以及与操作系统进行交互。