diff --git a/inc/hgl/graph/VKDevice.h b/inc/hgl/graph/VKDevice.h index d25690a6..a891208f 100644 --- a/inc/hgl/graph/VKDevice.h +++ b/inc/hgl/graph/VKDevice.h @@ -48,6 +48,7 @@ struct VulkanHardwareRequirement bool multi_draw_indirect; ///<要求支持MultiDrawIndirect bool wide_lines; ///<要求支持宽线条 + bool line_rasterization; ///<要支持线条特性 bool large_points; ///<要求支持绘制大点 bool texture_cube_array; ///<要求支持立方体数组纹理 diff --git a/src/SceneGraph/Vulkan/VKDeviceCreater.cpp b/src/SceneGraph/Vulkan/VKDeviceCreater.cpp index 9876d4c6..3a89cd13 100644 --- a/src/SceneGraph/Vulkan/VKDeviceCreater.cpp +++ b/src/SceneGraph/Vulkan/VKDeviceCreater.cpp @@ -51,6 +51,9 @@ namespace if(physical_device->CheckExtensionSupport(ext_name)) ext_list->Add(ext_name); + if(require.line_rasterization) + ext_list->Add(VK_EXT_LINE_RASTERIZATION_EXTENSION_NAME); + if(require.texture_compression.pvrtc) //前面检测过了,所以这里不用再次检测是否支持 ext_list->Add(VK_IMG_FORMAT_PVRTC_EXTENSION_NAME); } @@ -623,6 +626,8 @@ bool RequirementCheck(const VulkanHardwareRequirement &require,const GPUPhysical if(require.dynamic_state[1]&&(!pd->CheckExtensionSupport(VK_EXT_EXTENDED_DYNAMIC_STATE_2_EXTENSION_NAME )))return(false); if(require.dynamic_state[2]&&(!pd->CheckExtensionSupport(VK_EXT_EXTENDED_DYNAMIC_STATE_3_EXTENSION_NAME )))return(false); + if(require.line_rasterization&&(!pd->CheckExtensionSupport(VK_EXT_LINE_RASTERIZATION_EXTENSION_NAME)))return(false); + return(true); }