判断浏览器是否支持WebGL


发表于 修改于 Code 176 字 1 分钟

检测 WebGL 是否可用

const canvas = document.getElementById("GameCanvas");
const contexts = ["webgl2", "webgl", "experimental-webgl"];
let gl = null;
for (const type of contexts) {
gl = canvas.getContext(type);
if (gl) break;
}
if (!gl) {
console.log("该浏览器不支持WebGL");
}

监听 WebGL webglcontextlost

const canvas = document.getElementById("GameCanvas");
canvas.addEventListener(
"webglcontextlost",
function (e) {
console.log("webglcontextlost", e);
},
false
);

模拟 WebGL lost

const canvas = document.getElementById("GameCanvas");
const contexts = ["webgl2", "webgl", "experimental-webgl"];
let gl = null;
for (const type of contexts) {
gl = canvas.getContext(type);
if (gl) break;
}
if (!gl) {
console.log("该浏览器不支持WebGL");
} else {
var lose_context = gl.getExtension("WEBGL_lose_context"); // 使用 var 变量提升
lose_context.loseContext();
}

监听 webglcontextrestored

const canvas = document.getElementById("GameCanvas");
canvas.addEventListener(
"webglcontextrestored",
(e) => {
console.log("webglcontextrestored", e);
},
false
);

模拟 WebGL restored

// 必须先使用前面模拟webgl lost方法
lose_context.restoreContext();