1 pontos por GN⁺ 2025-08-16 | Ainda não há comentários. | Compartilhar no WhatsApp
  • Ao executar jogos em tela cheia no MacBook, a maioria deles renderiza de forma borrada por causa do problema do notch da tela
  • O mecanismo de seleção de resolução do sistema não considera a área do notch, causando a escolha incorreta da área de saída
  • Selecionar uma resolução 16:10 é uma solução temporária, mas a causa raiz está no design das APIs da Apple e na falta de orientação
  • O problema pode ser reproduzido em jogos conhecidos (Shadow of the Tomb Raider, No Man’s Sky etc.); alguns jogos mais recentes (Cyberpunk 2077) lidam com isso corretamente
  • A Apple precisa melhorar as orientações e o suporte aos desenvolvedores com atualizações no HIG e nas APIs

Problema: por que jogos em tela cheia no Mac ficam com renderização borrada

  • Esse problema foi enviado à Apple em setembro de 2023 como o issue FB13375033
  • Ao rodar jogos em tela cheia em telas de MacBook, a maioria dos jogos não considera corretamente a área do notch, o que causa erros de renderização
  • Muitos jogos recebem do sistema a lista de resoluções suportadas e escolhem a primeira delas (a resolução de toda a área da tela), mas na prática a área em tela cheia disponível no AppKit fica limitada à região abaixo do notch
  • Quando o jogo renderiza na resolução total da tela, a área real disponível para desenhar é menor, então o frame é comprimido verticalmente, o que leva ao efeito de borrado

A estrutura das áreas da tela no Mac

  • Uma tela de Mac com notch tem três áreas principais
    • Limites totais da tela (incluindo notch e menu)
    • Safe area (abaixo do notch)
    • Área de tela cheia disponível no AppKit (abaixo da barra de menu)
  • A lista de resoluções retornada pela função CGDisplayCopyAllDisplayModes mistura a resolução total da tela com a resolução abaixo da barra de menu (geralmente na proporção 16:10)
  • A maioria dos jogos usa o primeiro item da lista (a área total da tela), gerando saída incorreta
  • Exemplo: Shadow of the Tomb Raider inicia por padrão na resolução total da tela (3456x2234), mas a área real disponível para desenho é 3456x2160 (uma diferença de 74 pixels que comprime a imagem e deixa a renderização borrada)

Solução: escolha correta da resolução e alternativa temporária

  • Usuários: ao executar jogos em tela cheia em uma tela de Mac com notch, é importante selecionar manualmente uma resolução 16:10 (o jogo não ajusta isso automaticamente)
  • Desenvolvedores: é preciso filtrar a lista de resoluções de forma um pouco mais refinada usando a propriedade safeAreaInsets de NSScreen
    • Foi fornecido um algoritmo em código para filtrar apenas resoluções compatíveis com a safe area (com o efeito colateral de filtrar em excesso algumas resoluções, como 4:3)
    • No fim, o problema precisa ser resolvido pela Apple

Jogos afetados: principais casos e situação atual

  • Shadow of the Tomb Raider, Control Ultimate Edition, No Man’s Sky, Riven, Stray e a maioria dos outros apresentam compressão e renderização borrada por causa do padrão incorreto de resolução
    • Control: define a resolução por conta própria, mas ela não corresponde à resolução real do Mac
    • No Man’s Sky: oferece proporções incorretas e resoluções tanto da safe area quanto da área fora dela
    • Riven, Stray: aplicam por padrão renderização em resolução comprimida
  • Cyberpunk 2077 escolhe uma resolução correta na proporção 16:10 (o método interno de filtragem não foi divulgado)
  • World of Warcraft: por usar uma API legada que permite desenhar até o notch, a resolução total funciona normalmente

O que a Apple poderia fazer: necessidade de resposta da Apple

  • É preciso adicionar ao documento HIG (Human Interface Guidelines) orientações e tratamento de resolução para telas com notch
  • É necessário atualizar CGDisplayMode no AppKit/Cocoa para facilitar o filtro de resoluções
  • É preciso projetar uma nova API voltada à otimização de jogos (resolvendo lista de resoluções e boilerplate)
  • Para os desenvolvedores, pode-se considerar recomendar o cálculo da própria lista de resoluções em vez de consultar resoluções diretamente, ou o uso de “render scale”
  • Se essas melhorias forem adotadas, a Apple também deveria atualizar em conjunto a documentação oficial e os códigos de exemplo

Ainda não há comentários.

Ainda não há comentários.