Example #1
0
        /// <summary>
        /// Binds an index buffer to this command buffer
        /// </summary>
        /// <param name="buffer">buffer to bind</param>
        /// <param name="offset">offset into buffer</param>
        /// <returns>this</returns>
        public void BindIndexBuffer(IBindableBuffer buffer, VkIndexType type, ulong offset = 0)
        {
            var bh = buffer.BindingHandle.Handle;

            offset += buffer.Offset;
            VkCommandBuffer.vkCmdBindIndexBuffer(Handle, bh, offset, type);
        }
Example #2
0
        /// <summary>
        /// Binds a vertex buffer to this command buffer
        /// </summary>
        /// <param name="binding">binding</param>
        /// <param name="buffer">buffer to bind</param>
        /// <param name="offset">offset into buffer</param>
        /// <returns>this</returns>
        public void BindVertexBuffer(uint binding, IBindableBuffer buffer, ulong offset = 0)
        {
            var bh = buffer.BindingHandle.Handle;

            offset += buffer.Offset;
            unsafe
            {
                VkCommandBuffer.vkCmdBindVertexBuffers(Handle, binding, 1, &bh, &offset);
            }
        }
Example #3
0
 public static VkBufferMemoryBarrier CreateBarrier(this IBindableBuffer buffer, uint srcQueue, uint dstQueue,
                                                   VkAccessFlag srcAccess = VkAccessFlag.AllExceptExt, VkAccessFlag dstAccess = VkAccessFlag.AllExceptExt)
 {
     return(new VkBufferMemoryBarrier()
     {
         Buffer = buffer.BindingHandle.Handle,
         PNext = IntPtr.Zero,
         Offset = buffer.Offset,
         Size = buffer.Size,
         SType = VkStructureType.BufferMemoryBarrier,
         SrcQueueFamilyIndex = srcQueue,
         DstQueueFamilyIndex = dstQueue,
         SrcAccessMask = srcAccess,
         DstAccessMask = dstAccess
     });
 }