我正在使用精灵表格来创建带有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 ...)强制执行。
答案 0 :(得分:0)
这是正在进行的工作。每当THREE.Image
落地时都要留意。