Vulkan with IWindow
IWindow needs some isntance extensions to create a VkSurfaceKHR
. On Win32 the extensions are VK_KHR_WIN32_SURFACE_EXTENSION_NAME
and VK_KHR_SURFACE_EXTENSION_NAME
. On X11 the extensions are VK_KHR_XLIB_SURFACE_EXTENSION_NAME
and VK_KHR_SURFACE_EXTENSION_NAME
.
All of the classes/functions in the page is on IWindowVK.h
.
To get the required extensions IWindow has a function.
void IWindow::Vk::GetRequiredInstanceExtensions(std::vector<const char*>& extentionNames)
Example:
...
std::vector<const char*> iWindowExtensionNames;
IWindow::Vk::GetRequiredInstanceExtensions(iWindowExtensionNames);
VkInstanceCreateInfo instanceInfo{};
instanceInfo.sType = VK_STRUCTURE_TYPE_INSTANCE_CREATE_INFO;
instanceInfo.pApplicationInfo = &appInfo;
instanceInfo.enabledExtensionCount = (uint32_t)iWindowExtensionNames.size();
instanceInfo.ppEnabledExtensionNames = iWindowExtensionNames.data();
...
IWindow will create a VkSurfaceKHR
for you since its platform dependent.
VkResult IWindow::Vk::CreateSurface(VkInstance instance, VkSurfaceKHR& surface, Window& window)
.
This is pretty self explanitory. The function takes in an instance, a surface that will be modified and a IWindow::Window&
. The function will return the output of the vk create function.