コード例 #1
0
        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);
        }
コード例 #2
0
        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);
        }