diff --git a/CMCore b/CMCore index 2ec8168b..91301417 160000 --- a/CMCore +++ b/CMCore @@ -1 +1 @@ -Subproject commit 2ec8168b16c709342320b4f7db0782ca2288edb0 +Subproject commit 91301417d5ffcadeece7150ce42ae0a4fa9054c7 diff --git a/CMSceneGraph b/CMSceneGraph index ef941fde..d32c4ebf 160000 --- a/CMSceneGraph +++ b/CMSceneGraph @@ -1 +1 @@ -Subproject commit ef941fde85bc16964cbbcd7c4505189986834e0a +Subproject commit d32c4ebff959a593ce7938a0d1697987c670c837 diff --git a/inc/hgl/graph/vulkan/VKDevice.h b/inc/hgl/graph/vulkan/VKDevice.h index ad793632..b10661ac 100644 --- a/inc/hgl/graph/vulkan/VKDevice.h +++ b/inc/hgl/graph/vulkan/VKDevice.h @@ -117,14 +117,7 @@ public: //Buffer相关 public: //Image - VkImage CreateImage1D (const VkFormat format,const uint32_t width, const uint usage,const ImageTiling tiling); - VkImage CreateImage1DArray (const VkFormat format,const uint32_t width,const uint32_t layer, const uint usage,const ImageTiling tiling); - VkImage CreateImage2D (const VkFormat format,const uint32_t width,const uint32_t height, const uint usage,const ImageTiling tiling); - VkImage CreateImage2DArray (const VkFormat format,const uint32_t width,const uint32_t height,const uint32_t layer, const uint usage,const ImageTiling tiling); - VkImage CreateImage3D (const VkFormat format,const VkExtent3D &extent, const uint usage,const ImageTiling tiling); - VkImage CreateCubemap (const VkFormat format,const uint32_t width,const uint32_t height, const uint usage,const ImageTiling tiling); -// VkImage CreateCubemapArray (const VkFormat format,const uint32_t width,const uint32_t height,const uint32_t layer, const uint usage,const ImageTiling tiling); - + VkImage CreateImage (VkImageCreateInfo *); void DestoryImage (VkImage); public: //Texture diff --git a/src/RenderDevice/Vulkan/VKDeviceImage.cpp b/src/RenderDevice/Vulkan/VKDeviceImage.cpp index 0dc1bf25..abe0ba1e 100644 --- a/src/RenderDevice/Vulkan/VKDeviceImage.cpp +++ b/src/RenderDevice/Vulkan/VKDeviceImage.cpp @@ -2,91 +2,15 @@ #include VK_NAMESPACE_BEGIN -VkImage Device::CreateImage1D(const VkFormat format,const uint32_t length,const uint usage,const ImageTiling tiling) +VkImage Device::CreateImage(VkImageCreateInfo *ici) { - if(!CheckVulkanFormat(format))return(nullptr); - if(length<1)return(nullptr); - - Image1DCreateInfo imageCreateInfo(usage,tiling,format,length); + if(!ici)return(VK_NULL_HANDLE); + if(!CheckVulkanFormat(ici->format))return(VK_NULL_HANDLE); + if(ici->extent.width*ici->extent.height*ici->extent.depth*ici->arrayLayers<=0)return(VK_NULL_HANDLE); VkImage image; - if(vkCreateImage(attr->device,&imageCreateInfo, nullptr, &image)!=VK_SUCCESS) - return(nullptr); - - return image; -} - -VkImage Device::CreateImage1DArray(const VkFormat format,const uint32_t length,const uint32_t layer,const uint usage,const ImageTiling tiling) -{ - if(!CheckVulkanFormat(format))return(nullptr); - if(length<1||layer<1)return(nullptr); - - Image1DArrayCreateInfo imageCreateInfo(usage,tiling,format,length,layer); - - VkImage image; - - if(vkCreateImage(attr->device,&imageCreateInfo, nullptr, &image)!=VK_SUCCESS) - return(nullptr); - - return image; -} - -VkImage Device::CreateImage2D(const VkFormat format,const uint32_t width,const uint32_t height,const uint usage,const ImageTiling tiling) -{ - if(!CheckVulkanFormat(format))return(nullptr); - if(width<1||height<1)return(nullptr); - - Image2DCreateInfo imageCreateInfo(usage,tiling,format,width,height); - - VkImage image; - - if(vkCreateImage(attr->device,&imageCreateInfo, nullptr, &image)!=VK_SUCCESS) - return(nullptr); - - return image; -} - -VkImage Device::CreateImage2DArray(const VkFormat format,const uint32_t width,const uint32_t height,const uint32_t layer,const uint usage,const ImageTiling tiling) -{ - if(!CheckVulkanFormat(format))return(nullptr); - if(width<1||height<1)return(nullptr); - - Image2DArrayCreateInfo imageCreateInfo(usage,tiling,format,width,height,layer); - - VkImage image; - - if(vkCreateImage(attr->device,&imageCreateInfo, nullptr, &image)!=VK_SUCCESS) - return(nullptr); - - return image; -} - -VkImage Device::CreateImage3D(const VkFormat format,const VkExtent3D &extent,const uint usage,const ImageTiling tiling) -{ - if(!CheckVulkanFormat(format))return(nullptr); - if(extent.width<1||extent.height<1||extent.depth<1)return(nullptr); - - Image3DCreateInfo imageCreateInfo(usage,tiling,format,extent); - - VkImage image; - - if(vkCreateImage(attr->device,&imageCreateInfo, nullptr, &image)!=VK_SUCCESS) - return(nullptr); - - return image; -} - -VkImage Device::CreateCubemap(const VkFormat format,const uint32_t width,const uint32_t height,const uint usage,const ImageTiling tiling) -{ - if(!CheckVulkanFormat(format))return(nullptr); - if(width<1||height<1)return(nullptr); - - ImageCubemapCreateInfo imageCreateInfo(usage,tiling,format,width,height); - - VkImage image; - - if(vkCreateImage(attr->device,&imageCreateInfo, nullptr, &image)!=VK_SUCCESS) + if(vkCreateImage(attr->device,ici, nullptr, &image)!=VK_SUCCESS) return(nullptr); return image;