菜单

显示服务器系统

相关源文件

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

Windows 实现使用 Win32 API 来创建和管理窗口、捕获输入以及与操作系统进行交互。

来源

macOS

macOS 实现使用 Cocoa/AppKit 来创建和管理窗口以及与操作系统进行交互。