Example #1
0
        public void ProcessChunks()
        {
            // 当前仅处理 Font Texture chunk
            if (props.type != SectionType.FrameCapture)
            {
                return;
            }

            chunkMetas = new List <ChunkMeta>();

            using (MemoryStream ms = new MemoryStream(uncompressedData))
                using (BinaryReader br = new BinaryReader(ms))
                {
                    int index           = 1; // RenderDoc的chunk从1开始计数
                    int eventBeginIndex = 0;
                    while (ms.Position < uncompressedData.Length)
                    {
                        int eventId = 0;
                        if (eventBeginIndex != 0)
                        {
                            eventId = index - eventBeginIndex;
                        }

                        var chunkMeta = new ChunkMeta(index, eventId);
                        chunkMeta.LoadFromStream(br);
                        index++;

                        if (chunkMeta.chunkID == (int)SystemChunk.CaptureBegin)
                        {
                            eventBeginIndex        = chunkMeta.index;
                            CaptureBeginChunkIndex = index - 1;
                        }

                        chunkMetas.Add(chunkMeta);
                    }
                }

            chunkManager = new ChunkManager();
            chunkManager.LoadChunksFromSection(this);

            //// 通过关键字查找chunk offset
            //int fontNameOffset = uncompressedData.IndexOf(fontTextureMagicData);
            //if (fontNameOffset == -1)
            //{
            //    Console.WriteLine("can not find [Font Texture] chunk");
            //    return;
            //}

            //using (MemoryStream ms = new MemoryStream(uncompressedData))
            //using (BinaryReader br = new BinaryReader(ms))
            //{
            //    int SetResourceNameOffset = fontNameOffset + fontTextureMagicData.Length;
            //    SetResourceNameOffset = (SetResourceNameOffset + 63) & (~63);

            //    ms.Position = SetResourceNameOffset;

            //    fontTextureChunk = new ChunkMeta();
            //    fontTextureChunk.LoadFromStream(br);
            //}
        }