20 auto logicalDevice = mRenderer->GetLogicalDevice();
22 VkDeviceSize bufferSize =
sizeof(vertices[0]) * vertices.size();
23 mVertexBufferSize =
static_cast<size_t>(bufferSize);
24 VkBuffer stagingBuffer;
25 VkDeviceMemory stagingBufferMemory;
26 mRenderer->CreateBuffer(bufferSize, VK_BUFFER_USAGE_TRANSFER_SRC_BIT, VK_MEMORY_PROPERTY_HOST_VISIBLE_BIT | VK_MEMORY_PROPERTY_HOST_COHERENT_BIT,
27 stagingBuffer, stagingBufferMemory);
30 vkMapMemory(logicalDevice, stagingBufferMemory, 0, bufferSize, 0, &data);
32 memcpy(data, vertices.data(), mVertexBufferSize);
33 vkUnmapMemory(logicalDevice, stagingBufferMemory);
34 mRenderer->CreateBuffer(bufferSize, VK_BUFFER_USAGE_TRANSFER_DST_BIT | VK_BUFFER_USAGE_VERTEX_BUFFER_BIT, VK_MEMORY_PROPERTY_DEVICE_LOCAL_BIT,
35 mVertexBuffer, mVertexBufferMemory);
37 mRenderer->CopyBuffer(stagingBuffer, mVertexBuffer, bufferSize);
40 vkDestroyBuffer(logicalDevice, stagingBuffer,
nullptr);
41 vkFreeMemory(logicalDevice, stagingBufferMemory,
nullptr);
46 auto logicalDevice = mRenderer->GetLogicalDevice();
48 VkDeviceSize bufferSize =
sizeof(vertices[0]) * vertices.size();
49 mVertexBufferSize =
static_cast<size_t>(bufferSize);
50 VkBuffer stagingBuffer;
51 VkDeviceMemory stagingBufferMemory;
52 mRenderer->CreateBuffer(bufferSize, VK_BUFFER_USAGE_TRANSFER_SRC_BIT, VK_MEMORY_PROPERTY_HOST_VISIBLE_BIT | VK_MEMORY_PROPERTY_HOST_COHERENT_BIT,
53 stagingBuffer, stagingBufferMemory);
56 vkMapMemory(logicalDevice, stagingBufferMemory, 0, bufferSize, 0, &data);
58 memcpy(data, vertices.data(), mVertexBufferSize);
59 vkUnmapMemory(logicalDevice, stagingBufferMemory);
60 mRenderer->CreateBuffer(bufferSize, VK_BUFFER_USAGE_TRANSFER_DST_BIT | VK_BUFFER_USAGE_VERTEX_BUFFER_BIT, VK_MEMORY_PROPERTY_DEVICE_LOCAL_BIT,
61 mVertexBuffer, mVertexBufferMemory);
63 mRenderer->CopyBuffer(stagingBuffer, mVertexBuffer, bufferSize);
66 vkDestroyBuffer(logicalDevice, stagingBuffer,
nullptr);
67 vkFreeMemory(logicalDevice, stagingBufferMemory,
nullptr);
72 auto logicalDevice = mRenderer->GetLogicalDevice();
74 VkDeviceSize bufferSize =
sizeof(vertices[0]) * vertices.size();
75 mVertexBufferSize =
static_cast<size_t>(bufferSize);
76 VkBuffer stagingBuffer;
77 VkDeviceMemory stagingBufferMemory;
78 mRenderer->CreateBuffer(bufferSize, VK_BUFFER_USAGE_TRANSFER_SRC_BIT, VK_MEMORY_PROPERTY_HOST_VISIBLE_BIT | VK_MEMORY_PROPERTY_HOST_COHERENT_BIT,
79 stagingBuffer, stagingBufferMemory);
82 vkMapMemory(logicalDevice, stagingBufferMemory, 0, bufferSize, 0, &data);
84 memcpy(data, vertices.data(), mVertexBufferSize);
85 vkUnmapMemory(logicalDevice, stagingBufferMemory);
86 mRenderer->CreateBuffer(bufferSize, VK_BUFFER_USAGE_TRANSFER_DST_BIT | VK_BUFFER_USAGE_VERTEX_BUFFER_BIT, VK_MEMORY_PROPERTY_DEVICE_LOCAL_BIT,
87 mVertexBuffer, mVertexBufferMemory);
89 mRenderer->CopyBuffer(stagingBuffer, mVertexBuffer, bufferSize);
92 vkDestroyBuffer(logicalDevice, stagingBuffer,
nullptr);
93 vkFreeMemory(logicalDevice, stagingBufferMemory,
nullptr);
98 auto logicalDevice = mRenderer->GetLogicalDevice();
100 VkDeviceSize bufferSize =
sizeof(indices[0]) * indices.size();
101 mIndexBufferSize =
static_cast<size_t>(bufferSize);
103 VkBuffer stagingBuffer;
104 VkDeviceMemory stagingBufferMemory;
105 mRenderer->CreateBuffer(bufferSize, VK_BUFFER_USAGE_TRANSFER_SRC_BIT, VK_MEMORY_PROPERTY_HOST_VISIBLE_BIT | VK_MEMORY_PROPERTY_HOST_COHERENT_BIT, stagingBuffer, stagingBufferMemory);
108 vkMapMemory(logicalDevice, stagingBufferMemory, 0, bufferSize, 0, &data);
109 memcpy(data, indices.data(), mIndexBufferSize);
110 vkUnmapMemory(logicalDevice, stagingBufferMemory);
112 mRenderer->CreateBuffer(bufferSize, VK_BUFFER_USAGE_TRANSFER_DST_BIT | VK_BUFFER_USAGE_INDEX_BUFFER_BIT, VK_MEMORY_PROPERTY_DEVICE_LOCAL_BIT, mIndexBuffer, mIndexBufferMemory);
114 mRenderer->CopyBuffer(stagingBuffer, mIndexBuffer, bufferSize);
116 vkDestroyBuffer(logicalDevice, stagingBuffer,
nullptr);
117 vkFreeMemory(logicalDevice, stagingBufferMemory,
nullptr);
127 auto logicalDevice = mRenderer->GetLogicalDevice();
129 vkDestroyBuffer(logicalDevice, mIndexBuffer,
nullptr);
130 vkFreeMemory(logicalDevice, mIndexBufferMemory,
nullptr);
132 vkDestroyBuffer(logicalDevice, mVertexBuffer,
nullptr);
133 vkFreeMemory(logicalDevice, mVertexBufferMemory,
nullptr);