# 그래픽 컨텍스트가 사라지도록 계획하세요.

> 손실된 WebGL 컨텍스트를 감지하고, GPU 개체와 별도로 게임 상태를 보존하고, 의도적인 렌더러 복구 경로를 테스트합니다.

- URL: https://oneshotgems.ai/ko/topics/webgl-context-loss
- 카테고리: 게임 개발자용
- 유형: 가이드
- 업데이트일: 2026년 10월 5일

브라우저나 시스템이 그래픽 리소스를 회수하거나, 드라이버가 변경되거나, GPU 작업이 중단되면 WebGL 컨텍스트가 손실될 수 있습니다. 한때 텍스처, 버퍼 및 프로그램을 참조했던 GPU 핸들은 손실 후 더 이상 사용하기에 안전하지 않습니다. 강력한 게임은 해당 리소스 외부에서 게임의 기준 상태와 플레이어 상태를 유지하므로 전체 게임을 다시 시작하지 않고도 렌더러를 다시 빌드할 수 있습니다. 컨텍스트 손실은 테스트하지 않고 방치할 이벤트가 아니라 의도적으로 연습할 가치가 있는 극단적인 경우입니다.

## 렌더링을 중지하고 복구 가능한 상태를 표시합니다.

캔버스에서 webglcontextlost를 수신하고, 복원을 지원하려고 할 때 기본 동작을 방지하고, 컨텍스트를 사용할 수 없는 동안 그리기 호출 실행을 중지합니다. 복구하는 데 시간이 걸릴 수 있는 경우 플레이어에게 제한적인 메시지를 제공하되, 현재 게임 상태를 유지하고 이를 새로운 레벨이나 손실된 저장으로 취급하지 마십시오.

소스 이미지, 셰이더 텍스트, 버퍼 데이터 등의 리소스 설명을 WebGL 핸들과 별도로 사용할 수 있도록 유지합니다. 복원 시 해당 설명에서 새로운 GPU 개체 세트를 만들고 속성과 유니폼을 다시 연결하고 뷰포트와 렌더링 상태를 복원한 다음 알려진 작은 장면이 올바르게 그려진 후에만 재개합니다.

## 실제 상호작용 중 손실 시뮬레이션

장면이 로드된 후 손실을 트리거하려면 개발 중에 WEBGL_lose_context 확장을 사용하세요. 텍스처가 추가되는 동안, 플레이어가 이동하는 동안, 표시되는 탭으로 돌아온 후 컨텍스트 손실을 테스트합니다. 복원 경로가 필요한 모든 리소스를 다시 생성하고 보류 중인 비동기 로드가 안전하게 다시 적용되거나 삭제되는지 확인합니다.

MDN은 손실 이벤트와 테스트용 확장 기능을 문서화합니다. 또한 실패한 그래픽 작업을 일반 셰이더 또는 자산 오류로 해석하기 전에 isContextLost()를 확인하세요. 복구 버그를 일반 렌더링 오류와 구별할 수 있도록 개발 진단에서 발생한 상황을 기록합니다.

## 자주 묻는 질문

**컨텍스트 복원을 통해 텍스처가 다시 ​​돌아오나요?** 아니요. 새로운 컨텍스트를 새로운 GPU 리소스가 필요한 것으로 간주하십시오. 소스 데이터 또는 이를 다시 로드하는 방법을 보존한 다음 컨텍스트가 복원되면 텍스처 및 기타 개체를 다시 만듭니다.

**실제 실패를 기다리지 않고 컨텍스트 손실을 테스트하려면 어떻게 해야 합니까?** MDN의 webglcontextlost 문서는 복구 경로를 실행할 수 있도록 의도적으로 손실을 유발할 수 있는 WEBGL_lose_context 확장을 보여줍니다.

## 궁금한 것을 더 찾아보세요

- [브라우저 게임에서 메모리 누수 추적](https://oneshotgems.ai/ko/topics/game-memory-leaks): 반복 가능한 플레이 및 정리 확인을 사용하여 시간이 지남에 따라 축적되는 유지된 게임 장면, 청취자, 타이머 및 자산을 찾습니다.
- [캔버스 렌더링 병목 현상 찾기](https://oneshotgems.ai/ko/topics/canvas-game-performance): 반복 가능한 장면으로 2D 캔버스 게임을 프로파일링하고 프레임이 소비되는 위치를 측정한 후에만 비용이 많이 드는 그리기 작업을 줄일 수 있습니다.

## 추가 읽을거리

- [MDN: 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)

---
대표 페이지: https://oneshotgems.ai/ko/topics/webgl-context-loss
