44 lines
1.3 KiB
C++
44 lines
1.3 KiB
C++
#include"VKTextureLoader.h"
|
||
#include<hgl/io/FileInputStream.h>
|
||
#include<hgl/log/LogInfo.h>
|
||
#include<hgl/graph/VKTexture.h>
|
||
#include<hgl/graph/module/TextureManager.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<> Texture2DArray *VkTextureLoader<Texture2DArray,Texture2DArrayLoader>::OnCreateTexture(TextureCreateInfo *tci)
|
||
//{
|
||
// return device->CreateTexture2DArray(tci);
|
||
//}
|
||
|
||
bool LoadTexture2DLayerFromFile(TextureManager *tm,Texture2DArray *ta,const uint32_t layer,const OSString &filename,bool auto_mipmaps)
|
||
{
|
||
if(!tm||filename.IsEmpty())
|
||
return(false);
|
||
|
||
//注:依然是Texture2D,则非Texture2DArray。因为这里LOAD的是2D纹理,并不是2DArray纹理
|
||
VkTextureLoader<Texture2D,Texture2DLoader> loader(tm,auto_mipmaps);
|
||
|
||
if(!loader.Load(filename))
|
||
return(false);
|
||
|
||
DeviceBuffer *buf=loader.GetBuffer();
|
||
|
||
if(!buf)
|
||
return(false);
|
||
|
||
RectScope2ui scope;
|
||
|
||
scope.Width=ta->GetWidth();
|
||
scope.Height=ta->GetHeight();
|
||
|
||
return tm->ChangeTexture2DArray(ta,buf,scope,layer,1);
|
||
}
|
||
VK_NAMESPACE_END
|