Hacker News Digest

14 августа 2025 г. в 22:11 • colincornaby.me • ⭐ 430 • 💬 280

OriginalHN

#swift#macos#graphics#api#apple#gaming#resolution#display

Blurry rendering of games on Mac

Проблема
На ноутбуках Mac с «чёлкой» большинство игр по умолчанию выбирают разрешение всего экрана (включая область под чёлкой), хотя рисовать можно только ниже неё. Из-за этого картинка сжимается и размывается. API CGDisplayCopyAllDisplayModes выдаёт смешанный список: полные и фактически доступные 16:10-режимы, но без пометок. Разница в высоте всего 74 px, но её достаточно, чтобы всё выглядело мутно.

Решение
Игрокам: в настройках графики выбирайте 16:10-разрешение.
Разработчикам: фильтруйте список режимов, оставляя только те, что помещаются в safe-area. Пример:

extension NSScreen {
    func safeAreaResolutions() -> [CGDisplayMode] {
        let w = frame.width - safeAreaInsets.left - safeAreaInsets.right
        let h = frame.height - safeAreaInsets.top - safeAreaInsets.bottom
        return CGDisplayCopyAllDisplayModes(...)?
            .filter { $0.width <= w && $0.height <= h } ?? []
    }
}

Какие игры страдают
Практически все, если не задан 16:10 вручную: Shadow of the Tomb Raider, Resident Evil, No Man’s Sky и др.

Что может сделать Apple

  • Разделить списки режимов или пометить их флагом.
  • Добавить CGDisplayModeGetUsableBounds.
  • Сделать 16:10-режим выбором по умолчанию для полноэкранных игр.