简体   繁体   中英

Unity3d - LoadRawTextureData

I'm recive jpg image byte data from server. It's byte data can be converted to image using LoadImage method. But this method is slow and work only in Unity3d main thread.

LoadRawTextureData - is fast, but required 'raw byte data'.

Raw data example:

byte[] pvrtcBytes = new byte[] {
            0x30, 0x32, 0x32, 0x32, 0xe7, 0x30, 0xaa, 0x7f, 0x32, 0x32, 0x32, 0x32, 0xf9, 0x40, 0xbc, 0x7f,
            0x03, 0x03, 0x03, 0x03, 0xf6, 0x30, 0x02, 0x05, 0x03, 0x03, 0x03, 0x03, 0xf4, 0x30, 0x03, 0x06,
            0x32, 0x32, 0x32, 0x32, 0xf7, 0x40, 0xaa, 0x7f, 0x32, 0xf2, 0x02, 0xa8, 0xe7, 0x30, 0xff, 0xff,
            0x03, 0x03, 0x03, 0xff, 0xe6, 0x40, 0x00, 0x0f, 0x00, 0xff, 0x00, 0xaa, 0xe9, 0x40, 0x9f, 0xff,
            0x5b, 0x03, 0x03, 0x03, 0xca, 0x6a, 0x0f, 0x30, 0x03, 0x03, 0x03, 0xff, 0xca, 0x68, 0x0f, 0x30,
            0xaa, 0x94, 0x90, 0x40, 0xba, 0x5b, 0xaf, 0x68, 0x40, 0x00, 0x00, 0xff, 0xca, 0x58, 0x0f, 0x20,
            0x00, 0x00, 0x00, 0xff, 0xe6, 0x40, 0x01, 0x2c, 0x00, 0xff, 0x00, 0xaa, 0xdb, 0x41, 0xff, 0xff,
            0x00, 0x00, 0x00, 0xff, 0xe8, 0x40, 0x01, 0x1c, 0x00, 0xff, 0x00, 0xaa, 0xbb, 0x40, 0xff, 0xff,
        };

How to convert non raw byte array to raw byte array?

PS: Unity 5.6.0f3

Unfortunately there is no easy way to do it. The thread limit is pretty significant, and UnityEngine built in decoder can't easily be pushed to another thread. I experimented with using some third party code for decode/encode that could run in seperate thread, but in the end my results were insatisfactionary - C# Jpeg code was so much slower, that there was no benefit from threading. What you could do is write a C++ decoder plugin, that would just pass a pointer to decoded texture, that way you should be able to offload the main thread, but it can hardly be called easy

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM