public GLDescriptorSetLayout(MgDescriptorSetLayoutCreateInfo pCreateInfo) { if (pCreateInfo.Bindings != null) { var highestBinding = 0U; var uniforms = new List <GLUniformBinding>(); foreach (var binding in pCreateInfo.Bindings) { highestBinding = Math.Max(binding.Binding, highestBinding); var uniform = new GLUniformBinding { Binding = binding.Binding, DescriptorType = binding.DescriptorType, DescriptorCount = binding.DescriptorCount, StageFlags = binding.StageFlags, }; uniforms.Add(uniform); } var count = highestBinding + 1; Uniforms = new GLUniformBinding[count]; foreach (var uni in uniforms) { Uniforms[uni.Binding] = uni; } } else { Uniforms = new GLUniformBinding[0]; } }
public GLNextPipelineLayout(MgPipelineLayoutCreateInfo pCreateInfo) { if (pCreateInfo.SetLayouts.Length == 1) { var layout = (IGLDescriptorSetLayout)pCreateInfo.SetLayouts[0]; Bindings = layout.Uniforms; } else { Bindings = new GLUniformBinding[0]; } NoOfBindingPoints = 0; NoOfStorageBuffers = 0; NoOfExpectedDynamicOffsets = 0; Ranges = new SortedDictionary <int, GLBindingPointOffsetInfo>(); OffsetDestinations = ExtractBindingsInformation(); SetupOffsetRangesByBindings(); }