r71:texture.needsUpdate = true不会更新firefox40中的纹理

时间:2015-10-28 02:11:28

标签: three.js

我需要通过更改纹理中图像的来源来更新项目中网格的纹理。代码如下:

mesh.material.map.image.src= "path/to/image"; mesh.material.map.texture.needsUpdate = true;

图像已完全加载。它适用于chrome,但不适用于firefox,浏览器不会立即呈现新纹理,我通过以下方式修复它:

setTimeout( function(){ mesh.material.map.texture.needsUpdate = true; }, 100);

我不知道为什么它不能立即在firefox中更新,有没有人遇到过这个问题?

1 个答案:

答案 0 :(得分:1)

由于超时修复了问题,在纹理加载

之前,needsUpdate标志被设置回false

你应该使用加载器来获取纹理

var texture = THREE.ImageUtils.loadTexture("path/to/image");

它还有一个回调加载纹理时会发生什么

var texture = THREE.ImageUtils.loadTexture("path/to/image", THREE.UVMapping, onLoadCallback);

回调将纹理加载为参数,因此您可以在加载后将其添加到材质,但加载器将纹理needsUpdate标志设置为true本身如此简单

var texture = THREE.ImageUtils.loadTexture("path/to/image");
mesh.material.map = texture;

应该足够了