68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
|
# File 'lib/vulkan/queue.rb', line 68
def present(swapchains:, image_indices:, wait_semaphores: [])
raise ArgumentError, "swapchains and image_indices must have same sizes" unless swapchains.size == image_indices.size
wait_semaphores_p = @wait_semaphores_buffers[wait_semaphores.size] ||= Fiddle::Pointer.malloc(wait_semaphores.size * Fiddle::SIZEOF_VOIDP)
array_of_pointers(wait_semaphores, wait_semaphores_p)
image_indices_p = @image_indices_buffers[image_indices.size] ||= Vulkan.struct(["uint32_t indices[#{image_indices.size}]"]).malloc
data = image_indices.pack("I*")
image_indices_p[0, data.size] = data
swapchains_p = @swapchains_buffers[swapchains.size] ||= Fiddle::Pointer.malloc(swapchains.size * Fiddle::SIZEOF_VOIDP)
array_of_pointers(swapchains, swapchains_p)
@present_info.waitSemaphoreCount = wait_semaphores.size
@present_info.pWaitSemaphores = wait_semaphores_p
@present_info.swapchainCount = swapchains.size
@present_info.pSwapchains = swapchains_p
@present_info.pImageIndices = image_indices_p
@present_info.pResults = nil
check_result @vk.vkQueuePresentKHR(to_ptr, @present_info)
end
|