В IE11 версии 11.0.9600.16428 и ниже некоторые методы WebGL не работают правильно (как указано здесь: https://github.com/mrdoob/three.js/issues/3600)Как определить IE11 WebGL совместимость (clearStencil, шейдеры) правильно
Одним из примеров является метод clearStencil
. Проблема в том, что метод существует, но он работает неправильно. Я хотел бы обнаружить это и дать пользователю некоторую обратную связь. Я попробовал Detector.js из Three.js, но он проверяет только, поддерживает ли браузер и графическую карту WebGL, а не поддерживает ли они все соответствующие функции.
Я попытался сделать чек WebGL так:
var supportsWebGL=function(){
if(Detector.webgl){
var _canvas = document.createElement('canvas');
var _gl = _canvas.getContext('webgl') || _canvas.getContext('experimental-webgl');
try{
_gl.clearStencil(0);
}catch(e){
return false;
}
return true;
}else{
return false;
}
}
В IE11 (11.0.9600.16428) метод supportsWebGL
возвращает истину, но дает мне ошибку вроде этого:
WEBGL11095: INVALID-OPERATION: clearStencil: Метод не в настоящее время поддерживается.
Теперь я хочу, чтобы мой метод supportsWebGL
обнаружил эту неспособность и возвращает false. Кто-нибудь знает, как это сделать?
Мне нравится это решение больше, чем браузер, нюхающий один, но все же ... try/catch ... urgh ... создание нового контекста только для проверки ... urgh ... ^^ – Winchestro