克隆纹理而不会在THREE.js中导致重复的卡内存

时间:2014-08-26 20:36:54

标签: three.js

我正在使用精灵表格来创建带有THREE.js的动画纹理。每个子画面实例都使用纹理偏移来控制哪些图像呈现该帧。屏幕上可能会同时出现多个动画精灵。

目前我正在使用Texture.clone()复制精灵表格纹理。但是,除非我将 Texture.needsUpdate 设置为true,否则纹理将不会显示在精灵上。将 needsUpdate 设置为true允许我一次显示多个独立的动画精灵,但不幸的是,这会导致纹理内存在卡(/集成芯片)上重复。使用Chrome WebGL Inspector我可以清楚地看到精灵纹理的重复次数与已渲染的动画精​​灵相同。

有没有办法克隆/重用每个实例的不同偏移量的纹理而不重复内存?这是一个错误还是我做错了什么。

THREE.js r67

更新

我们解决这个问题的一种方式(不是我承认的一种很好的方式)是复制分配给原始纹理的GL纹理ID并将克隆纹理设置为初始化。

clonedTexture.__webglTexture = origTexture.__webglTexture;
clonedTexture.__webglInit = true;

这要求纹理已经发送到卡片,我们用render.setTexture(origTexture ...)强制执行。

1 个答案:

答案 0 :(得分:0)

这是正在进行的工作。每当THREE.Image落地时都要留意。