# 使用 LWJGL3 的桌面端 (Windows/macOS/Linux)

> 快速迭代循环——运行、标题/旋转、crossfly-lib 以及 macOS 上的坑。

Source: https://crossfly.dev/zh/docs/platforms/desktop-lwjgl3 — CrossFly documentation. Full docs as one file: https://crossfly.dev/llms-full.txt

# 桌面端 (LWJGL3) 🖥️

**始终**从桌面端开始：它是**快速迭代循环**。虽然没有 Java 热重载，但*冷启动*只需几秒——
你可以在承受移动端构建周期之苦前先验证 UI。

## 运行
```bash
gradlew :lwjgl3:run
```
`Lwjgl3Launcher` 创建应用：`new Main(true, getCommandline(args))`——`canStart=true` 会立即拉起
UI。`mainClassName` = `dev.crossfly.lwjgl3.Lwjgl3Launcher`。

## 标题、大小和旋转
```java
Main.setDesktopTitle("Minha App");   // 仅在桌面端生效
main.rotate();                        // 在桌面端模拟旋转（交换 width/height）
```
尺寸和缩放来自 `Screen`（`Screen.width`/`height`/`scale`/`minSize`）。

## ⚠️ 桌面端的两个前提条件
- **`crossfly-lib` (JNI)** 必须位于 `java.library.path` 中——`Main.create()` 在启动时调用
  `SharedLibraryLoader.load("crossfly-lib")`（在所有目标平台上，**WebGL 除外**）。
- **macOS** 需要 JVM 标志 **`-XstartOnFirstThread`**（LWJGL3/GLFW 在 Mac 上的要求）。没有它，
  应用不会打开窗口。

## 诊断
- 全局异常处理器会汇集失败信息（参见 [错误与日志](/docs/best-practices/tratamento-de-erros-e-logging)）。
- 设置 `Debug.showFPS = true` 以查看帧率。
- 生成截图（文档/商店）：`Main.getScreenShot(true).toPng("prefixo_")`。

## 最佳实践
- **在桌面端**开发和验证 UI；只有在界面准备就绪后再转向移动端。
- 测试**旋转**（`rotate()`）和不同的窗口大小，以检查响应式布局。

## 常见错误
- 在 macOS 上忘记 `-XstartOnFirstThread`（窗口不打开）。
- `crossfly-lib` 不在 `java.library.path` 中（启动失败）。

## 另请参阅
- [构建与分发](/docs/platforms/building-and-releasing) · [响应式布局](/docs/best-practices/responsividade)
