added cube/cube array support at VKImageView.cpp

This commit is contained in:
hyzboy 2022-01-05 18:20:48 +08:00
parent 556f3a08a2
commit 967f03992f
4 changed files with 15 additions and 3 deletions

@ -1 +1 @@
Subproject commit 7c8a5888a72d091e6bf6192226dec16d84d50245 Subproject commit 26a383ee11a8f49b87ab7999110e3b9539202d37

View File

@ -171,6 +171,9 @@ public: //Texture
Texture2D *CreateTexture2D(TextureData *); Texture2D *CreateTexture2D(TextureData *);
Texture2D *CreateTexture2D(TextureCreateInfo *ci); Texture2D *CreateTexture2D(TextureCreateInfo *ci);
TextureCube *CreateTextureCube(TextureData *);
TextureCube *CreateTextureCube(TextureCreateInfo *ci);
void Clear(TextureCreateInfo *); void Clear(TextureCreateInfo *);
bool ChangeTexture2D(Texture2D *,GPUBuffer *buf,const List<Image2DRegion> &, VkPipelineStageFlags=VK_PIPELINE_STAGE_FRAGMENT_SHADER_BIT); bool ChangeTexture2D(Texture2D *,GPUBuffer *buf,const List<Image2DRegion> &, VkPipelineStageFlags=VK_PIPELINE_STAGE_FRAGMENT_SHADER_BIT);

View File

@ -116,7 +116,8 @@ SET(VK_MEMORY_SOURCE ${SG_INCLUDE_PATH}/VKMemory.h
SET(VK_DEVICE_TEXTURE_SOURCE Vulkan/Texture/BufferImageCopy2D.h SET(VK_DEVICE_TEXTURE_SOURCE Vulkan/Texture/BufferImageCopy2D.h
Vulkan/Texture/GenMipmaps2D.cpp Vulkan/Texture/GenMipmaps2D.cpp
Vulkan/Texture/VKDeviceTexture.cpp Vulkan/Texture/VKDeviceTexture.cpp
Vulkan/Texture/VKDeviceTexture2D.cpp) Vulkan/Texture/VKDeviceTexture2D.cpp
Vulkan/Texture/VKDeviceTextureCube.cpp)
SET(VK_TEXTURE_LOADER_SOURCE ${SG_INCLUDE_PATH}/VKTextureCreateInfo.h SET(VK_TEXTURE_LOADER_SOURCE ${SG_INCLUDE_PATH}/VKTextureCreateInfo.h
Vulkan/Texture/VKTextureLoader.h Vulkan/Texture/VKTextureLoader.h

View File

@ -17,8 +17,16 @@ ImageView *CreateImageView(VkDevice device,VkImageViewType type,VkFormat format,
iv_createinfo.subresourceRange.baseMipLevel =0; iv_createinfo.subresourceRange.baseMipLevel =0;
iv_createinfo.subresourceRange.levelCount =miplevel; iv_createinfo.subresourceRange.levelCount =miplevel;
iv_createinfo.subresourceRange.baseArrayLayer =0; iv_createinfo.subresourceRange.baseArrayLayer =0;
if(type==VK_IMAGE_VIEW_TYPE_CUBE)
iv_createinfo.subresourceRange.layerCount =6;
else
if(type==VK_IMAGE_VIEW_TYPE_CUBE_ARRAY)
iv_createinfo.subresourceRange.layerCount =6*ext.depth;
else
iv_createinfo.subresourceRange.layerCount =ext.depth; iv_createinfo.subresourceRange.layerCount =ext.depth;
if(aspectMask&VK_IMAGE_ASPECT_DEPTH_BIT) if(aspectMask&VK_IMAGE_ASPECT_DEPTH_BIT)
{ {
if(format>=VK_FORMAT_D16_UNORM_S8_UINT) if(format>=VK_FORMAT_D16_UNORM_S8_UINT)