Exemplo n.º 1
0
        public void Set(uint binding, uint idx, ImageView img, bool rw)
        {
            var img_info = new VkDescriptorImageInfo()
            {
                sampler     = IntPtr.Zero,
                imageView   = img.hndl,
                imageLayout = rw ? VkImageLayout.ImageLayoutGeneral : VkImageLayout.ImageLayoutShaderReadOnlyOptimal
            };
            var img_info_ptr = img_info.Pointer();

            var desc_write = new VkWriteDescriptorSet()
            {
                sType            = VkStructureType.StructureTypeWriteDescriptorSet,
                dstSet           = hndl,
                dstBinding       = binding,
                dstArrayElement  = idx,
                descriptorCount  = 1,
                pImageInfo       = img_info_ptr,
                pBufferInfo      = IntPtr.Zero,
                pTexelBufferView = null,
                descriptorType   = (VkDescriptorType)Layout.Layouts[(int)binding].Type
            };

            vkUpdateDescriptorSets(GraphicsDevice.GetDeviceInfo(devID).Device, 1, desc_write.Pointer(), 0, null);
        }
Exemplo n.º 2
0
        public void Set(uint binding, uint idx, GpuBuffer buf, ulong off, ulong len)
        {
            var buf_info = new VkDescriptorBufferInfo()
            {
                buffer = buf.hndl,
                offset = off,
                range  = len
            };
            var buf_info_ptr = buf_info.Pointer();

            var desc_write = new VkWriteDescriptorSet()
            {
                sType            = VkStructureType.StructureTypeWriteDescriptorSet,
                dstSet           = hndl,
                dstBinding       = binding,
                dstArrayElement  = idx,
                descriptorCount  = 1,
                pImageInfo       = IntPtr.Zero,
                pBufferInfo      = buf_info_ptr,
                pTexelBufferView = null,
                descriptorType   = (VkDescriptorType)Layout.Layouts[(int)binding].Type
            };

            vkUpdateDescriptorSets(GraphicsDevice.GetDeviceInfo(devID).Device, 1, desc_write.Pointer(), 0, null);
        }
Exemplo n.º 3
0
        public void Set(uint binding, uint idx, GpuBufferView buf)
        {
            unsafe
            {
                IntPtr p_l        = buf.hndl;
                var    desc_write = new VkWriteDescriptorSet()
                {
                    sType            = VkStructureType.StructureTypeWriteDescriptorSet,
                    dstSet           = hndl,
                    dstBinding       = binding,
                    dstArrayElement  = idx,
                    descriptorCount  = 1,
                    pImageInfo       = IntPtr.Zero,
                    pBufferInfo      = buf.parent.hndl,
                    pTexelBufferView = &p_l,
                    descriptorType   = (VkDescriptorType)Layout.Layouts[(int)binding].Type
                };

                vkUpdateDescriptorSets(GraphicsDevice.GetDeviceInfo(devID).Device, 1, desc_write.Pointer(), 0, null);
            }
        }