Skip to content

Commit 780282f

Browse files
committed
Index Buffer
1 parent 8a1c48e commit 780282f

1 file changed

Lines changed: 18 additions & 2 deletions

File tree

src/main.cpp

Lines changed: 18 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,7 @@ VkFence fences[FRAMES_IN_FLIGHT];
1919
VkSemaphore acquireSemaphores[FRAMES_IN_FLIGHT];
2020
VkSemaphore releaseSemaphores[FRAMES_IN_FLIGHT];
2121
VulkanBuffer vertexBuffer;
22+
VulkanBuffer indexBuffer;
2223

2324
bool handleMessage() {
2425
SDL_Event event;
@@ -55,14 +56,22 @@ void recreateRenderPass() {
5556
}
5657

5758
float vertexData[] = {
58-
0.0f, -0.5f,
59+
0.5f, -0.5f,
5960
1.0f, 0.0f, 0.0f,
6061

6162
0.5f, 0.5f,
6263
0.0f, 1.0f, 0.0f,
6364

6465
-0.5f, 0.5f,
6566
0.0f, 0.0f, 1.0f,
67+
68+
-0.5f, -0.5f,
69+
0.0f, 1.0f, 0.0f,
70+
};
71+
72+
uint32_t indexData[] = {
73+
0, 1, 2,
74+
3, 0, 2,
6675
};
6776

6877
void initApplication(SDL_Window* window) {
@@ -124,6 +133,11 @@ void initApplication(SDL_Window* window) {
124133
VKA(vkMapMemory(context->device, vertexBuffer.memory, 0, sizeof(vertexData), 0, &data));
125134
memcpy(data, vertexData, sizeof(vertexData));
126135
VK(vkUnmapMemory(context->device, vertexBuffer.memory));
136+
137+
createBuffer(context, &indexBuffer, sizeof(indexData), VK_BUFFER_USAGE_INDEX_BUFFER_BIT, VK_MEMORY_PROPERTY_HOST_VISIBLE_BIT);
138+
VKA(vkMapMemory(context->device, indexBuffer.memory, 0, sizeof(indexData), 0, &data));
139+
memcpy(data, indexData, sizeof(indexData));
140+
VK(vkUnmapMemory(context->device, indexBuffer.memory));
127141
}
128142

129143
void recreateSwapchain() {
@@ -189,8 +203,9 @@ void renderApplication() {
189203

190204
VkDeviceSize offset = 0;
191205
vkCmdBindVertexBuffers(commandBuffer, 0, 1, &vertexBuffer.buffer, &offset);
206+
vkCmdBindIndexBuffer(commandBuffer, indexBuffer.buffer, 0, VK_INDEX_TYPE_UINT32);
192207

193-
vkCmdDraw(commandBuffer, 3, 1, 0, 0);
208+
vkCmdDrawIndexed(commandBuffer, ARRAY_COUNT(indexData), 1, 0, 0, 0);
194209

195210
vkCmdEndRenderPass(commandBuffer);
196211

@@ -229,6 +244,7 @@ void shutdownApplication() {
229244
VKA(vkDeviceWaitIdle(context->device));
230245

231246
destroyBuffer(context, &vertexBuffer);
247+
destroyBuffer(context, &indexBuffer);
232248

233249
for(uint32_t i = 0; i < FRAMES_IN_FLIGHT; ++i) {
234250
VK(vkDestroyFence(context->device, fences[i], 0));

0 commit comments

Comments
 (0)