public static ConstantBuffer Parse( BytecodeReader reader, BytecodeReader constantBufferReader, ShaderVersion target) { uint nameOffset = constantBufferReader.ReadUInt32(); var nameReader = reader.CopyAtOffset((int) nameOffset); uint variableCount = constantBufferReader.ReadUInt32(); uint variableOffset = constantBufferReader.ReadUInt32(); var result = new ConstantBuffer { Name = nameReader.ReadString() }; var variableReader = reader.CopyAtOffset((int) variableOffset); for (int i = 0; i < variableCount; i++) result.Variables.Add(ShaderVariable.Parse(reader, variableReader, target, i == 0)); result.Size = constantBufferReader.ReadUInt32(); result.Flags = (ConstantBufferFlags) constantBufferReader.ReadUInt32(); result.BufferType = (ConstantBufferType) constantBufferReader.ReadUInt32(); return result; }