Javascript sprites在three.js中是如何工作的?

Javascript sprites在three.js中是如何工作的?,javascript,three.js,Javascript,Three.js,我有一个场景有很多精灵,帧速率很差。我试图降低精灵的分辨率,设置相机限制以渲染距离,但没有效果。还有两种方法:创建面向摄影机或粒子系统的板,但此精灵使用大量纹理,因此此方法将调用大量绘制调用(针对每个纹理)。那么,你能解释精灵在场景中绘制的时间和方式、它们如何使用绘制调用以及可能存在的任何性能技巧吗 我有大约2500个精灵和200个纹理(256x256) 很抱歉复制了我的照片,但我无法相信精灵在three.js中的效果会如此糟糕。精灵的绘制方式与其他所有东西相同,它们只是面向相机旋转的四边形 使

我有一个场景有很多精灵,帧速率很差。我试图降低精灵的分辨率,设置相机限制以渲染距离,但没有效果。还有两种方法:创建面向摄影机或粒子系统的板,但此精灵使用大量纹理,因此此方法将调用大量绘制调用(针对每个纹理)。那么,你能解释精灵在场景中绘制的时间和方式、它们如何使用绘制调用以及可能存在的任何性能技巧吗

我有大约2500个精灵和200个纹理(256x256)


很抱歉复制了我的照片,但我无法相信精灵在three.js中的效果会如此糟糕。精灵的绘制方式与其他所有东西相同,它们只是面向相机旋转的四边形

使用三个,确保你没有重新创建相同的对象-材质、纹理,无论什么-当你可以制作一个并重复使用它时


我认为问题可能是不同纹理的数量太多。最好使用纹理图集。

可能是重复的,非常感谢您的回答!关于纹理图谱。它应该与精灵或平面几何一起使用?据我所知,对于精灵来说,只能通过texture.repeat和texture.offset选择纹理图集的部分,这需要为每个部分使用单独的材质,并且不保存绘制调用。对于平面,可以使用uv贴图,但我不太明白如何在一次调用中实现,如果我合并所有平面,我将没有机会将每个平面旋转到cameraGood点。是的,这是奇怪的,你必须作出新的材料,以改变纹理偏移和重复。它可能会被优化,但我会测试它。如果你想让飞机表现得像精灵一样,请查阅“广告牌矩阵”。我认为理论上可以用一个合并的几何体来做,但你必须在顶点着色器中进行所有旋转。谢谢,我会尝试,我正在考虑使用粒子系统和着色器材质(我已经测试过,它完美地绘制了大约200k的精灵,而且它会自动将精灵旋转到摄影机),但是我发现我在着色器中使用uv贴图的能力非常差