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-режим выбором по умолчанию для полноэкранных игр.
Комментарии (280)
- Круглые углы и вырезы экрана вызывают у многих раздражение: вместо идеальной геометрии приходится снова «ломать» картинку ради эстетики.
- Проблема размытого рендеринга в играх на Mac сводится к тому, что игры выбирают «первое» разрешение из списка, не учитывая safe-area и выреза.
- Разработчики жалуются на отсутствие документации и «магическое» поведение macOS, из-за чего каждая игра решает проблему по-своему.
- Часть пользователей считает вырез незаметным, другие вынуждены подключать внешний монитор или отказываться от игр.
- Общий вывод: Apple мало заботится о гейминге на Mac, рынок мал, а документация и инструменты оставляют желать лучшего.