# Planeje o desaparecimento do contexto gráfico

> Detecte um contexto WebGL perdido, preserve o estado do jogo separadamente dos objetos da GPU e teste um caminho deliberado de recuperação do renderizador.

- URL: https://oneshotgems.ai/pt-BR/topics/webgl-context-loss
- Categoria: Para desenvolvedores de jogos
- Tipo: Guia
- Atualizado: 5 de outubro de 2026

Um contexto WebGL pode ser perdido quando o navegador ou sistema recupera recursos gráficos, um driver é alterado ou o trabalho da GPU é interrompido. Os identificadores de GPU que antes se referiam a texturas, buffers e programas não são mais seguros para uso após a perda. Um jogo robusto mantém o estado autoritativo do jogo e o estado do jogador fora desses recursos, para que possa reconstruir o renderizador em vez de exigir a reinicialização completa do jogo. A perda de contexto é um caso extremo que vale a pena exercitar deliberadamente, e não um evento que não deve ser testado.

## Pare a renderização e mostre um estado recuperável

Ouça webglcontextlost na tela, evite o comportamento padrão quando pretende oferecer suporte à restauração e pare de emitir chamadas de desenho enquanto o contexto estiver indisponível. Dê ao jogador uma mensagem contida se a recuperação demorar, mas mantenha o estado atual do jogo e evite tratar isso como um novo nível ou um salvamento perdido.

Mantenha as descrições dos recursos, como imagem de origem, texto de sombreamento e dados de buffer, disponíveis independentemente dos identificadores WebGL. Na restauração, crie um novo conjunto de objetos GPU a partir dessas descrições, reconecte atributos e uniformes, restaure a janela de visualização e o estado de renderização e retome somente depois que uma pequena cena conhecida for desenhada corretamente.

## Simule perda durante uma interação real

Use a extensão WEBGL_lose_context durante o desenvolvimento para acionar a perda após o carregamento da cena. Teste a perda de contexto enquanto uma textura está sendo adicionada, enquanto o player está se movendo e depois de retornar a uma guia visível. Confirme se o caminho de restauração recria todos os recursos necessários e se qualquer carga assíncrona pendente é reaplicada ou descartada com segurança.

O MDN documenta o evento de perda e a extensão de teste. Verifique também isContextLost() antes de interpretar uma operação gráfica com falha como um erro comum de shader ou erro de ativo. Registre o que aconteceu nos diagnósticos de desenvolvimento para que um bug de recuperação possa ser diferenciado de uma falha normal de renderização.

## Perguntas

**A restauração de contexto traz minhas texturas de volta?** Não. Trate o novo contexto como uma necessidade de novos recursos de GPU. Preservar os dados de origem ou uma forma de recarregá-los e, em seguida, recriar texturas e outros objetos quando o contexto for restaurado.

**Como posso testar a perda de contexto sem esperar por uma falha real?** A documentação webglcontextlost do MDN demonstra a extensão WEBGL_lose_context, que pode acionar deliberadamente a perda para que você possa exercitar o caminho de recuperação.

## Siga sua curiosidade

- [Rastreie vazamentos de memória em um jogo de navegador](https://oneshotgems.ai/pt-BR/topics/game-memory-leaks): Use verificações repetíveis de reprodução e limpeza para encontrar cenas de jogo, ouvintes, cronômetros e ativos retidos que se acumulam ao longo do tempo.
- [Encontre gargalos de renderização no Canvas](https://oneshotgems.ai/pt-BR/topics/canvas-game-performance): Perfille um jogo 2D em Canvas com cenas repetíveis e reduza operações de desenho custosas somente depois de medir onde o tempo está sendo gasto.

## Leitura complementar

- [MDN: evento webglcontextlost](https://developer.mozilla.org/en-US/docs/Web/API/HTMLCanvasElement/webglcontextlost_event)
- [MDN:isContextLost()](https://developer.mozilla.org/en-US/docs/Web/API/WebGLRenderingContext/isContextLost)

---
Página canônica: https://oneshotgems.ai/pt-BR/topics/webgl-context-loss
