Unity-ImageLoader icon indicating copy to clipboard operation
Unity-ImageLoader copied to clipboard

图片多时会卡,最大的瓶颈就在那一行

Open ni-ken opened this issue 6 years ago • 2 comments

Texture2D texture = new Texture2D(width, height, TextureFormat.ARGB32, false); texture.LoadImage(data);

纹理创建和纹理数据载入不能在子线程中做,只能在主线程。一旦下载的图片是png、jpg等格式,LoadImage内部会解码元数据格式到ARGB32,这个是比较花费CPU的,所以图片多一些的时候,卡顿会很明显。好一点的做法考虑在收到http下载的图片数据后。自己写一个解码图片的函数在线程中计算解码。然后在主线程中把解码后的数据直接通过SetPixels或LoadRawTextureData。这样会减少卡顿。

ni-ken avatar Aug 03 '18 04:08 ni-ken

你可以提交一个pr 然后进来 因为毕竟我已经几年没维护了

hcq0618 avatar May 17 '19 08:05 hcq0618

纹理 2D 纹理 = 新纹理 2D (宽度、 高度、纹理形式. ARGB32, 错误); 纹理。负载图像(数据);

纹理创建和纹理数据载入不能在子线程中做,只能在主线程。 一旦下载的图片是png、jpg等格式,LoadImage内部会解码元数据格式到ARGB32,这个是比较花费CPU的,所以图片多一些的时候,卡顿会很明显。 好一点的做法考虑在收到http下载的图片数据后。 自己写一个解码图片的函数在线程中计算解码。 然后在主线程中把解码后的数据直接通过SetPixels或LoadRawTextureData。 这样会减少卡顿。

你好这个问题拟解决了嘛,有好的解决方案嘛

BensonMaZIHao avatar Aug 21 '21 07:08 BensonMaZIHao