public virtual BufferviewWithMemory CreateBufferview(BufferUsageFlags usageFlags, DeviceSize size, Matrix4[] data, Format format) { BufferviewWithMemory bufferviewWithMemory = new BufferviewWithMemory(VContext.Instance.BufferManager.CreateBuffer(usageFlags, size, data)); bufferviewWithMemory.Bufferview = CreateBufferview(bufferviewWithMemory.Buffer, format, size); return(bufferviewWithMemory); }
public DescriptorSet CreateDescriptorSet(int setIndex, int binding, BufferviewWithMemory bufferviewWithMemory) { ValidateDiscriporPool(); DescriptorSetLayout descriptorSetLayout = DescriptorSetLayouts[setIndex]; ShaderUniformSet shaderUniformSet = ShaderUniformSets[setIndex]; DescriptorSet descriptorSet = VContext.Instance.device.AllocateDescriptorSets( new DescriptorSetAllocateInfo() { DescriptorPool = VContext.Instance.descriptorPool, SetLayouts = new DescriptorSetLayout[] { descriptorSetLayout } } ).First(); ShaderUniform shaderUniformWithCorrectBinding = shaderUniformSet.ShaderUniforms.Where(su => su.Binding == binding).First(); VContext.Instance.device.UpdateDescriptorSet ( new WriteDescriptorSet() { DescriptorType = shaderUniformWithCorrectBinding.DescriptorType, DstBinding = (uint)shaderUniformWithCorrectBinding.Binding, DstSet = descriptorSet, BufferInfo = new DescriptorBufferInfo[] { new DescriptorBufferInfo() { Buffer = bufferviewWithMemory.Buffer, Offset = 0, Range = bufferviewWithMemory.Size, } }, TexelBufferView = new BufferView[] { bufferviewWithMemory.Bufferview }, }, null ); return(descriptorSet); }