我需要使用不同的纹理多次渲染一个对象。我想知道最有效的方法。我的第一种方法是使用一个Material,并在OnRenderImage()中调用SetTexture(),以获得给定数量的纹理。现在我想知道如果我在Start()中为每个纹理设置一个材质并在OnRenderImage()中的材质之间进行更改,这是否会有明显改善。然后我不需要SetTexture()调用。但是我找不到SetTexture()实际上做的事情。它只是设置一个标志还是复制或上传纹理?
答案 0 :(得分:1)
从广泛使用低端设备开始,性能来自批处理。在明确了解范围的情况下,很难确定哪些可以改善您的环境中的表现:
但作为一般规则,您希望使用最少量的材料和单个纹理。如果预处理是一个选项,我建议在单个图像上创建尽可能多的图像的spritesheets。然后使用UV偏移,您可以在多个对象上显示多个图像,以进行1次绘图调用。
我广泛使用了支持Unity的TexturePacker解决方案。它并不便宜,有购买的应用程序和Unity的插件,但它最终可以节省时间和绘制电话。
比如将数百张图像打包成几个4k纹理,然后打到3或4次绘制调用,而不是100s之前。
在您的情况下,这可能不是一个解决方案,但这个概念仍然有效。
整体预制件也不会保存Draw Calls,但会减少内存使用量。
第h
学家