LoadTexture2DToArray OK! test ok!
This commit is contained in:
@@ -37,9 +37,11 @@ public:
|
||||
}
|
||||
|
||||
template<typename T>
|
||||
BufferImageCopy(const Texture2DArray *tex,const RectScope2<T> &rs):BufferImageCopy()
|
||||
BufferImageCopy(const Texture2DArray *tex,const RectScope2<T> &rs,const uint32_t bl,const uint32_t lc):BufferImageCopy()
|
||||
{
|
||||
imageSubresource.aspectMask=tex->GetAspect();
|
||||
imageSubresource.aspectMask =tex->GetAspect();
|
||||
imageSubresource.baseArrayLayer =bl;
|
||||
imageSubresource.layerCount =lc;
|
||||
SetRectScope(rs);
|
||||
}
|
||||
|
||||
|
@@ -215,7 +215,7 @@ bool GPUDevice::ChangeTexture2DArray(Texture2DArray *tex,DeviceBuffer *buf,const
|
||||
||scope.GetBottom()>tex->GetHeight())
|
||||
return(false);
|
||||
|
||||
BufferImageCopy buffer_image_copy(tex,scope);
|
||||
BufferImageCopy buffer_image_copy(tex,scope,base_layer,layer_count);
|
||||
|
||||
texture_cmd_buf->Begin();
|
||||
bool result=CopyBufferToImage(tex,buf,&buffer_image_copy,1,base_layer,layer_count,destinationStage);
|
||||
|
@@ -3,25 +3,36 @@
|
||||
#include<hgl/log/LogInfo.h>
|
||||
|
||||
VK_NAMESPACE_BEGIN
|
||||
template<> void VkTextureLoader<Texture2DArray,Texture2DArrayLoader>::OnExtent(VkExtent3D &extent)
|
||||
{
|
||||
extent.width =file_header.width;
|
||||
extent.height =file_header.height;
|
||||
extent.depth =file_header.layers;
|
||||
}
|
||||
//template<> void VkTextureLoader<Texture2DArray,Texture2DArrayLoader>::OnExtent(VkExtent3D &extent)
|
||||
//{
|
||||
// extent.width =file_header.width;
|
||||
// extent.height =file_header.height;
|
||||
// extent.depth =file_header.layers;
|
||||
//}
|
||||
//
|
||||
//template<> Texture2DArray *VkTextureLoader<Texture2DArray,Texture2DArrayLoader>::OnCreateTexture(TextureCreateInfo *tci)
|
||||
//{
|
||||
// return device->CreateTexture2DArray(tci);
|
||||
//}
|
||||
|
||||
template<> Texture2DArray *VkTextureLoader<Texture2DArray,Texture2DArrayLoader>::OnCreateTexture(TextureCreateInfo *tci)
|
||||
bool LoadTexture2DLayerFromFile(GPUDevice *device,Texture2DArray *ta,const uint32_t layer,const OSString &filename,bool auto_mipmaps)
|
||||
{
|
||||
return device->CreateTexture2DArray(tci);
|
||||
}
|
||||
|
||||
Texture2DArray *CreateTexture2DArrayFromFile(GPUDevice *device,const OSString &filename,bool auto_mipmaps)
|
||||
{
|
||||
VkTextureLoader<Texture2DArray,Texture2DArrayLoader> loader(device,auto_mipmaps);
|
||||
//注:依然是Texture2D,则非Texture2DArray。因为这里LOAD的是2D纹理,并不是2DArray纹理
|
||||
VkTextureLoader<Texture2D,Texture2DLoader> loader(device,auto_mipmaps);
|
||||
|
||||
if(!loader.Load(filename))
|
||||
return(nullptr);
|
||||
|
||||
return loader.CreateTexture();
|
||||
DeviceBuffer *buf=loader.GetBuffer();
|
||||
|
||||
if(!buf)
|
||||
return(false);
|
||||
|
||||
RectScope2ui scope;
|
||||
|
||||
scope.Width=ta->GetWidth();
|
||||
scope.Height=ta->GetHeight();
|
||||
|
||||
return device->ChangeTexture2DArray(ta,buf,scope,layer,1);
|
||||
}
|
||||
VK_NAMESPACE_END
|
||||
|
@@ -59,6 +59,8 @@ public:
|
||||
return(true);
|
||||
}
|
||||
|
||||
DeviceBuffer *GetBuffer(){return buf;}
|
||||
|
||||
T *CreateTexture()
|
||||
{
|
||||
TextureCreateInfo *tci=new TextureCreateInfo(format);
|
||||
|
@@ -118,7 +118,6 @@ Sampler *RenderResource::CreateSampler(Texture *tex)
|
||||
}
|
||||
|
||||
Texture2D *CreateTexture2DFromFile(GPUDevice *device,const OSString &filename,bool auto_mipmaps);
|
||||
Texture2DArray *CreateTexture2DArrayFromFile(GPUDevice *device,const OSString &filename,bool auto_mipmaps);
|
||||
|
||||
Texture2D *RenderResource::LoadTexture2D(const OSString &filename,bool auto_mipmaps)
|
||||
{
|
||||
@@ -148,6 +147,18 @@ Texture2D *RenderResource::LoadTexture2D(const OSString &filename,bool auto_mipm
|
||||
return tex;
|
||||
}
|
||||
|
||||
bool LoadTexture2DLayerFromFile(GPUDevice *device,Texture2DArray *t2d,const uint32_t layer,const OSString &filename,bool auto_mipmaps);
|
||||
|
||||
bool RenderResource::LoadTexture2DToArray(Texture2DArray *ta,const uint32_t layer,const OSString &filename)
|
||||
{
|
||||
if(!ta)return(false);
|
||||
|
||||
if(!LoadTexture2DLayerFromFile(device,ta,layer,filename,false))
|
||||
return(false);
|
||||
|
||||
return(true);
|
||||
}
|
||||
|
||||
TextureCube *CreateTextureCubeFromFile(GPUDevice *device,const OSString &filename,bool auto_mipmaps);
|
||||
|
||||
TextureCube *RenderResource::LoadTextureCube(const OSString &filename,bool auto_mipmaps)
|
||||
|
Reference in New Issue
Block a user