1C·22·3A·F4·4E·1C·E5·D4·B6·7F·00
░▓▓░·//\·A3·5B·9C·1C·22·3A·B6·F4
0x4F 0x53 0x53 0x4D 0x41 0x52 ·· E5D4B6
┌───────────────────────┐
│ 01001111 01010011 01110011 │
└───────────────────────┘
F4·4E·1C·CAESANGUIS·1C·22·3A·E5·D4
▓░·MELCHIZEDEK://KERNEL·0.4·░▓
7F·00·FF·A3·5B·9C·1C·22·3A·B6·F4
E5·D4·B6·F4·4E·1C
··▓▓░░//\··1C·22
GRAPHICS·×·HPC
3A·B6·F4·4E·1C·E5
01000111 01010000 01010101
melchizedek ://caesanguis
ES / EN
--:--:--
APRENDIZAJE

Aprendiendo Vulkan desde cero — parte 2

En la parte 1 logré abrir una ventana e inicializar un dispositivo. Esta vez la meta era más pequeña y más terca: poner un solo triángulo en pantalla, entendiendo de verdad cada paso que lo pone ahí en vez de copiar un tutorial.

Vulkan no te esconde nada, y por eso enseña tanto — y por eso me tomó una tarde entera discutir con las validation layers antes de que algo se dibujara.

El problema con los validation layers

El primer error fue silencioso: un swapchain creado con un número de imágenes que no correspondía a las capacidades de la superficie que había consultado. Las validation layers lo detectaron de inmediato, pero leer bien el mensaje tomó más tiempo que arreglarlo.

VkSwapchainCreateInfoKHR createInfo{};
createInfo.minImageCount = imageCount;
createInfo.imageFormat   = surfaceFormat.format;
createInfo.imageExtent   = extent;
createInfo.imageArrayLayers = 1;

“Vulkan hace explícito el contrato de la GPU contigo — lo que significa que tus errores también son explícitos.”

Lo que sigue

  • Conectar un vertex buffer real en vez de posiciones fijas
  • Agregar una cámara básica y una matriz de proyección
  • Escribir la parte 3 cuando algo realmente se mueva en pantalla