2017-04-18 17 views
0

我想擴展一個使用Three.js作爲API的JS遊戲。最近已經發生的一個問題是這樣的錯誤:什麼時候「WebGLRenderingContext.uniform4fv的參數2不能」使用three.js出現?

TypeError: Argument 2 of WebGLRenderingContext.uniform4fv could not be converted to any of: Float32Array, UnrestrictedFloatSequence. 

在這行代碼導致這就是遊戲的基本渲染電話:

renderer.render(scene, camera); 

我現在可以在這裏粘貼亂碼,但多數民衆贊成不是爲什麼我在這裏。我希望有人也曾經歷過,並能告訴我問題是什麼。

注:

I.原始誤差是從內three.js所(內部呈現的東西)

three.min.js:7:118 

II.The第一幀可以沒有任何問題地呈現,之後的錯誤發生

三,現場作一些簡單的物體,但問題的根源是這樣的對象:

this.geometry = new THREE.PlaneGeometry(0.8, 0.8); 
this.texture = new THREE.TextureLoader().load("graphics/racers/" + racer + ".png", function() { return;}); 
this.texture.generateMipmaps = false; 
this.texture.minFilter = THREE.NearestFilter; 
this.texture.magFilter = THREE.NearestFilter; 
this.texture.repeat.set(0.25, 1); 
this.material = new THREE.MeshBasicMaterial({ map: this.texture, transparent: true }); 
this.mesh = new THREE.Mesh(this.geometry, this.material); 

scene.add(this.mesh); 

如果你有什麼事隨時問。

提前致謝!

編輯: 我發現錯誤只出現在相機看到Mesh-Object(上面提到的)時!

回答

0

原來我是一個傻瓜一直^^

我用

texture.offset = 0.25; 

代替

texture.offset.x = 0.25; 

哇!對於這樣一個錯誤感覺失敗很大:D無論如何:不會再做這件事。生活中的一課!

0

資產加載是異步的,很可能你的紋理在你使用它的時候沒有加載。使用例如在https://threejs.org/docs/index.html?q=TextureL#api/loaders/TextureLoader

+0

其實我也有這個想法,所以我確定紋理在我繼續之前被加載。該錯誤仍然存​​在,但我能夠找到源代碼:將「texture.offset」更改爲例如'0.25'會導致渲染在下一幀失敗。我不確定爲什麼會發生這種情況,但我會再次看看異步加載。 (注意:當我不應用偏移量時,紋理渲染到相機時沒有任何錯誤(但也沒有偏移))。謝謝你的幫助!非常歡迎! – Luftbaum

相關問題