2017-03-03 54 views
0

我面對很奇怪的問題。我在三星note3上運行了兩個threejs應用程序(相同的代碼庫僅在UI中更改)。一個應用程序運行完美,但在另一個webgl不工作Detector.webgl返回false。ThreeJS:WebGLRenderer表現得很怪異

ThreeJS版本:r79

this.renderer = new THREE.WebGLRenderer({ 
      antialias: true 
     }); 

上面的代碼是給這個錯誤:

TypeError: Cannot call method 'getExtension' of null 
at get (file:///android_asset/www/grid-assets/js/three.js:28022:20) 
at new THREE.WebGLRenderer (file:///android_asset/www/grid-assets/js/three.js:25056:13) 

任何幫助將高度讚賞。

感謝

回答

0

當WebGLRenderer被實例化,WebGLExtensions被稱爲獲得各種紋理過濾的支持。創建畫布對象時,存在於任何啓用了webGL的瀏覽器中的gl對象。 Three.js就像這樣:

gl = canvas.getContext('webgl'); 

在你的情況下,gl返回Null。由於你的錯誤不是:「getContext未定義」,我們知道你有一個好的畫布。問題是,當THREE.WebGLExtensions被調用時,它沒有返回一個webGL上下文到gl屬性。所以出於某種原因,瀏覽器不提供Three.js和webGL訪問。

這可能是一些事情。它可能是加載到頁面上的對象的時間,或停止瀏覽器中的webGL訪問(例如掛起進程)的時間。這很難說。我會檢查你是否有最新的Android和Android瀏覽器。我會將您的工作應用程序與失敗的應用程序進行比較,以確定失敗點。同時重新啓動設備,並讓您的應用程序成爲您打開的第一件事,以幫助排除導致webGL失敗的外部進程。