Exemple #1
0
        public void Write(EndianWriter writer)
        {
            uint headerSize     = (uint)m_shaderSubprogram.ConstantBuffers.Length * 24;
            uint variableOffset = m_contantBufferOffset + headerSize;

            for (int i = 0; i < m_shaderSubprogram.ConstantBuffers.Length; i++)
            {
                ConstantBuffer constantBuffer = m_shaderSubprogram.ConstantBuffers[i];
                VariableChunk  variableChunk  = m_variables[i];
                uint           nameOffset     = m_nameLookup[constantBuffer.Name];
                writer.Write(nameOffset);
                writer.Write(variableChunk.Count);
                writer.Write(variableOffset);
                writer.Write((uint)constantBuffer.Size);
                //Flags
                writer.Write((uint)ConstantBufferFlags.None);
                //ContantBufferType
                writer.Write((uint)ConstantBufferType.ConstantBuffer);
                variableOffset += variableChunk.Size;
            }
            foreach (VariableChunk variableChunk in m_variables)
            {
                variableChunk.Write(writer);
            }
        }
Exemple #2
0
        public void Write(EndianWriter writer)
        {
            uint headerSize     = (uint)Count * 24;
            uint variableOffset = m_contantBufferOffset + headerSize;
            int  variableIndex  = 0;

            for (int i = 0; i < m_shaderSubprogram.ConstantBuffers.Length; i++, variableIndex++)
            {
                ConstantBuffer constantBuffer = m_shaderSubprogram.ConstantBuffers[i];
                VariableChunk  variableChunk  = m_variables[variableIndex];
                uint           nameOffset     = m_nameLookup[constantBuffer.Name];
                writer.Write(nameOffset);
                writer.Write(variableChunk.Count);
                writer.Write(variableOffset);
                writer.Write((uint)constantBuffer.Size);
                //Flags
                writer.Write((uint)ConstantBufferFlags.None);
                //ContantBufferType
                writer.Write((uint)ConstantBufferType.ConstantBuffer);
                variableOffset += variableChunk.Size;
            }
            for (int i = 0; i < m_shaderSubprogram.BufferParameters.Length; i++, variableIndex++)
            {
                BufferBinding bufferParamater = m_shaderSubprogram.BufferParameters[i];
                VariableChunk variableChunk   = m_variables[variableIndex];
                uint          nameOffset      = m_nameLookup[bufferParamater.Name];
                writer.Write(nameOffset);
                writer.Write(variableChunk.Count);
                writer.Write(variableOffset);
                //Size
                writer.Write((uint)4);
                //Flags
                writer.Write((uint)ConstantBufferFlags.None);
                //ContantBufferType
                writer.Write((uint)ConstantBufferType.ResourceBindInformation);
                variableOffset += variableChunk.Size;
            }
            foreach (VariableChunk variableChunk in m_variables)
            {
                variableChunk.Write(writer);
            }
        }