unity中使用WWW类动态加载pvr格式纹理
2016-05-02 18:13
1726 查看
unity中使用www加载网络图片为纹理时,通常会遇到内存占用太高问题。
一般我们会用pvr纹理打包成unity3d格式文件,然后使用www动态加载。
Texture2D.LoadImage 只支持png 或 jpg格式的图片。
如果想直接下载并load pvr格式的文件呢?
使用 Texture2D.LoadRawTextureData
但是不能直接 LoadRawTextureData(www.byte)
因为LoadRawTextureData 要求的参数是只包含RGB 的数据。
我们应该这样 :
WWW www = new WWW("file://test.pvr");
yield return www;
int headerSize = 52;
byte[] buffer = new byte[www.size - headerSize];
System.Buffer.BlockCopy(www.bytes, headerSize, buffer, 0, www.size - headerSize);
Texture2D tex = new Texture2D(512,256,TextureFormat.PVRTC_RGBA4,false,true);
tex.LoadRawTextureData(buffer);
tex.Apply();
因为pvr文件的前52个字节包含的是文件的文件头,要把他去掉。
OK!
一般我们会用pvr纹理打包成unity3d格式文件,然后使用www动态加载。
Texture2D.LoadImage 只支持png 或 jpg格式的图片。
如果想直接下载并load pvr格式的文件呢?
使用 Texture2D.LoadRawTextureData
但是不能直接 LoadRawTextureData(www.byte)
因为LoadRawTextureData 要求的参数是只包含RGB 的数据。
我们应该这样 :
WWW www = new WWW("file://test.pvr");
yield return www;
int headerSize = 52;
byte[] buffer = new byte[www.size - headerSize];
System.Buffer.BlockCopy(www.bytes, headerSize, buffer, 0, www.size - headerSize);
Texture2D tex = new Texture2D(512,256,TextureFormat.PVRTC_RGBA4,false,true);
tex.LoadRawTextureData(buffer);
tex.Apply();
因为pvr文件的前52个字节包含的是文件的文件头,要把他去掉。
OK!
相关文章推荐
- Kinect结合Unity3D引擎开发体感游戏(一)
- 按右键另存图片只能存BMP
- photoshop去除图片上的水印
- IE7降低内存和降低CPU的几个技巧
- upload上传单张图片
- 图片引发的溢出危机(图)
- 如何高效的使用内存
- DOS下内存的配置
- XP/win2003下发现1G的内存比512M还慢的解决方法
- C#实现把彩色图片灰度化代码分享
- PowerShell实现动态获取当前脚本运行时消耗的内存
- C#将图片和字节流互相转换并显示到页面上
- C#监控文件夹并自动给图片文件打水印的方法
- 纯CSS实现的当鼠标移上图片添加阴影效果代码
- C#实现把dgv里的数据完整的复制到一张内存表的方法
- 如何使用C#从word文档中提取图片
- C#实现打开画图的同时载入图片、最大化显示画图窗体的方法
- SQL语句实现查询SQL Server内存使用状况
- C#图片添加水印的实现代码