#include"VKTextureLoader.h" #include #include VK_NAMESPACE_BEGIN //template<> void VkTextureLoader::OnExtent(VkExtent3D &extent) //{ // extent.width =file_header.width; // extent.height =file_header.height; // extent.depth =file_header.layers; //} // //template<> Texture2DArray *VkTextureLoader::OnCreateTexture(TextureCreateInfo *tci) //{ // return device->CreateTexture2DArray(tci); //} bool LoadTexture2DLayerFromFile(GPUDevice *device,Texture2DArray *ta,const uint32_t layer,const OSString &filename,bool auto_mipmaps) { //注:依然是Texture2D,则非Texture2DArray。因为这里LOAD的是2D纹理,并不是2DArray纹理 VkTextureLoader loader(device,auto_mipmaps); if(!loader.Load(filename)) return(nullptr); 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