public ConstantBufferData(SharpDX.D3DCompiler.ConstantBuffer cb) { Name = cb.Description.Name ?? string.Empty; Size = cb.Description.Size; ParameterIndex = new List <int>(); var parameters = new List <EffectObject.d3dx_parameter>(); // Gather all the parameters. for (var i = 0; i < cb.Description.VariableCount; i++) { var vdesc = cb.GetVariable(i); var param = GetParameterFromType(vdesc.GetVariableType()); param.name = vdesc.Description.Name; param.semantic = string.Empty; param.bufferOffset = vdesc.Description.StartOffset; var size = param.columns * param.rows * 4; var data = new byte[size]; if (vdesc.Description.DefaultValue != IntPtr.Zero) { Marshal.Copy(vdesc.Description.DefaultValue, data, 0, (int)size); } param.data = data; parameters.Add(param); } // Sort them by the offset for some consistent results. Parameters = parameters.OrderBy(e => e.bufferOffset).ToList(); // Store the parameter offsets. ParameterOffset = new List <int>(); foreach (var param in Parameters) { ParameterOffset.Add(param.bufferOffset); } }
public DXConstantBufferData(SharpDX.D3DCompiler.ConstantBuffer cb) { Name = cb.Description.Name ?? string.Empty; Size = cb.Description.Size; ParameterIndex = new List <int>(); var parameters = new List <DXEffectObject.d3dx_parameter>(); // Gather all the parameters. for (var i = 0; i < cb.Description.VariableCount; i++) { var vdesc = cb.GetVariable(i); var param = GetParameterFromType(vdesc.GetVariableType()); param.name = vdesc.Description.Name; param.semantic = string.Empty; param.bufferOffset = vdesc.Description.StartOffset; if (vdesc.Description.DefaultValue != IntPtr.Zero) { throw new NotImplementedException("No support for default values yet!"); } else { param.data = new byte[param.columns * param.rows * 4]; } parameters.Add(param); } // Sort them by the offset for some consistant results. Parameters = parameters.OrderBy(e => e.bufferOffset).ToList(); // Store the parameter offsets. ParameterOffset = new List <int>(); foreach (var param in Parameters) { ParameterOffset.Add(param.bufferOffset); } }