@@ -19,6 +19,7 @@ VkFence fences[FRAMES_IN_FLIGHT];
1919VkSemaphore acquireSemaphores[FRAMES_IN_FLIGHT];
2020VkSemaphore releaseSemaphores[FRAMES_IN_FLIGHT];
2121VulkanBuffer vertexBuffer;
22+ VulkanBuffer indexBuffer;
2223
2324bool handleMessage () {
2425 SDL_Event event;
@@ -55,14 +56,22 @@ void recreateRenderPass() {
5556}
5657
5758float 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
6877void 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
129143void 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