2017-04-18 76 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

相关问题