WebGLRenderingContext: isContextLost() 方法

Baseline 已廣泛支援

此特性已相當成熟,可在許多裝置和瀏覽器版本上使用。自 ⁨2015 年 7 月⁩以來,各瀏覽器均已提供此特性。

注意:此功能在 Web Workers 中可用。

WebGLRenderingContext.isContextLost() 方法返回一個布林值,指示 WebGL 上下文是否已丟失,以及是否必須重新建立才能恢復渲染。

語法

js
isContextLost()

引數

無。

返回值

如果上下文已丟失,則返回 true;否則返回 false

用法說明

WebGL 上下文丟失可能由多種原因引起,需要重新建立上下文才能恢復渲染。例如:

  • 兩個或多個頁面同時使用 GPU,但它們共同對 GPU 施加了過高的需求,因此瀏覽器會通知這兩個上下文它們已失去連線,然後選擇其中一個恢復訪問。
  • 使用者的計算機有多個圖形處理器(例如,筆記型電腦同時擁有移動級和桌面級 GPU,前者主要在電池供電時使用),並且使用者或系統決定切換 GPU。在這種情況下,所有上下文都會丟失,然後在切換 GPU 後恢復。
  • 使用者瀏覽器中執行的另一個頁面執行了一個耗時過長的 GPU 操作,導致瀏覽器決定重置 GPU 以打破僵局。這將導致整個瀏覽器中的所有 WebGL 上下文都丟失。
  • 使用者在允許在不重啟系統的情況下更新顯示卡驅動的作業系統上更新了他們的顯示卡驅動。

示例

例如,在檢查程式連結成功時,您也可以檢查上下文是否未丟失。

js
gl.linkProgram(program);

if (!gl.getProgramParameter(program, gl.LINK_STATUS) && !gl.isContextLost()) {
  const info = gl.getProgramInfoLog(program);
  console.log(`Error linking program:\n${info}`);
}

規範

規範
WebGL 規範
# 5.14.13

瀏覽器相容性

另見