Method: Vulkan::Buffer#initialize

Defined in:
lib/vulkan/buffer.rb

#initialize(vk, physical_device, size:, usage:, sharing_mode: VK_SHARING_MODE_EXCLUSIVE, flags: 0, **memory_args) ⇒ Buffer

Returns a new instance of Buffer.



11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
# File 'lib/vulkan/buffer.rb', line 11

def initialize(vk, physical_device, size:,
                                    usage:,
                                    sharing_mode: VK_SHARING_MODE_EXCLUSIVE,
                                    flags: 0,
                                    **memory_args)
  @vk = vk
  @size = size
  @mapped = Vulkan.create_value('void *', nil)

  buffer_info = VkBufferCreateInfo.malloc
  buffer_info.sType       = VK_STRUCTURE_TYPE_BUFFER_CREATE_INFO
  buffer_info.size        = size
  buffer_info.usage       = syms_to_buffer_usage_flags(usage)
  buffer_info.sharingMode = sharing_mode
  buffer_info.flags       = flags
  handle_p = Vulkan.create_value('void *', nil)
  check_result @vk.vkCreateBuffer(vk.device, buffer_info, nil, handle_p)
  @handle = handle_p.value
  @memory = Vulkan::BufferMemory.new(@vk, physical_device, owner: self,
                                                         **memory_args)
  finalize_with @vk, :vkDestroyBuffer, vk.device, @handle, nil
end