我一直坚持交换链的创建,我也不知道为什么。我启用了验证层,而我得到的最好的答案是:
我有Nvidia GTX960卡。我在上面运行了一些vulkan示例,因此它必须支持vulkan。
这是我的交换链创建器函数:
void Renderer::createSwapChain(VkSwapchainKHR *swapchain,VkPhysicalDevice *dev,VkDevice *vulk_dev,VkSurfaceKHR *surface, uint32_t family_index,VkExtent2D *extent) {
uint32_t format_count;
VkFormat format;
VkBool32 support;
vkGetPhysicalDeviceSurfaceSupportKHR(*dev, family_index, *surface, &support);
if (!support) {
fprintf(*Renderer::error_log, "%d :Surface is not supported.", __LINE__);
fclose(*Renderer::error_log);
exit(-1);
}
vkGetPhysicalDeviceSurfaceFormatsKHR(*dev, *surface, &format_count, nullptr);
vector<VkSurfaceFormatKHR> surface_format(format_count);
vkGetPhysicalDeviceSurfaceFormatsKHR(*dev, *surface, &format_count, surface_format.data());
if( 1 == format_count && surface_format[0].format == VK_FORMAT_UNDEFINED) {
format = VK_FORMAT_B8G8R8A8_UNORM;
infos.format.color_format = VK_FORMAT_B8G8R8A8_UNORM;
}else {
format = surface_format[0].format;
}
VkFormat depth_format = VK_FORMAT_D16_UNORM;
VkFormatProperties format_props;
vkGetPhysicalDeviceFormatProperties(*dev, depth_format, &format_props);
if (format_props.linearTilingFeatures …Run Code Online (Sandbox Code Playgroud) vulkan ×1