update codes of about TextureLoader
This commit is contained in:
parent
d3df8d50ca
commit
2ffe402fae
@ -15,15 +15,15 @@ class TextureManager:public GraphManager
|
||||
DeviceQueue *texture_queue;
|
||||
TextureCmdBuffer *texture_cmd_buf;
|
||||
|
||||
protected:
|
||||
|
||||
DeviceBuffer *CreateTransferSourceBuffer(const VkDeviceSize,const void *data_ptr=nullptr);
|
||||
|
||||
public:
|
||||
|
||||
TextureManager();
|
||||
virtual ~TextureManager();
|
||||
|
||||
public: //Buffer
|
||||
|
||||
DeviceBuffer *CreateTransferSourceBuffer(const VkDeviceSize,const void *data_ptr=nullptr);
|
||||
|
||||
public: //Image
|
||||
|
||||
VkImage CreateImage (VkImageCreateInfo *);
|
||||
|
@ -1,6 +1,8 @@
|
||||
#include"VKTextureLoader.h"
|
||||
#include<hgl/io/FileInputStream.h>
|
||||
#include<hgl/log/LogInfo.h>
|
||||
#include<hgl/graph/VKTexture.h>
|
||||
#include<hgl/graph/manager/TextureManager.h>
|
||||
|
||||
VK_NAMESPACE_BEGIN
|
||||
//template<> void VkTextureLoader<Texture2DArray,Texture2DArrayLoader>::OnExtent(VkExtent3D &extent)
|
||||
@ -15,10 +17,13 @@ VK_NAMESPACE_BEGIN
|
||||
// return device->CreateTexture2DArray(tci);
|
||||
//}
|
||||
|
||||
bool LoadTexture2DLayerFromFile(GPUDevice *device,Texture2DArray *ta,const uint32_t layer,const OSString &filename,bool auto_mipmaps)
|
||||
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(device,auto_mipmaps);
|
||||
VkTextureLoader<Texture2D,Texture2DLoader> loader(tm,auto_mipmaps);
|
||||
|
||||
if(!loader.Load(filename))
|
||||
return(false);
|
||||
@ -33,6 +38,6 @@ bool LoadTexture2DLayerFromFile(GPUDevice *device,Texture2DArray *ta,const uint3
|
||||
scope.Width=ta->GetWidth();
|
||||
scope.Height=ta->GetHeight();
|
||||
|
||||
return device->ChangeTexture2DArray(ta,buf,scope,layer,1);
|
||||
return tm->ChangeTexture2DArray(ta,buf,scope,layer,1);
|
||||
}
|
||||
VK_NAMESPACE_END
|
||||
|
@ -12,12 +12,15 @@ template<> void VkTextureLoader<Texture2D,Texture2DLoader>::OnExtent(VkExtent3D
|
||||
|
||||
template<> Texture2D *VkTextureLoader<Texture2D,Texture2DLoader>::OnCreateTexture(TextureCreateInfo *tci)
|
||||
{
|
||||
return device->CreateTexture2D(tci);
|
||||
return tex_manager->CreateTexture2D(tci);
|
||||
}
|
||||
|
||||
Texture2D *CreateTexture2DFromFile(GPUDevice *device,const OSString &filename,bool auto_mipmaps)
|
||||
Texture2D *CreateTexture2DFromFile(TextureManager *tm,const OSString &filename,bool auto_mipmaps)
|
||||
{
|
||||
VkTextureLoader<Texture2D,Texture2DLoader> loader(device,auto_mipmaps);
|
||||
if(!tm||filename.IsEmpty())
|
||||
return(nullptr);
|
||||
|
||||
VkTextureLoader<Texture2D,Texture2DLoader> loader(tm,auto_mipmaps);
|
||||
|
||||
if(!loader.Load(filename))
|
||||
return(nullptr);
|
||||
|
@ -12,12 +12,15 @@ template<> void VkTextureLoader<TextureCube,TextureCubeLoader>::OnExtent(VkExten
|
||||
|
||||
template<> TextureCube *VkTextureLoader<TextureCube,TextureCubeLoader>::OnCreateTexture(TextureCreateInfo *tci)
|
||||
{
|
||||
return device->CreateTextureCube(tci);
|
||||
return tex_manager->CreateTextureCube(tci);
|
||||
}
|
||||
|
||||
TextureCube *CreateTextureCubeFromFile(GPUDevice *device,const OSString &filename,bool auto_mipmaps)
|
||||
TextureCube *CreateTextureCubeFromFile(TextureManager *tm,const OSString &filename,bool auto_mipmaps)
|
||||
{
|
||||
VkTextureLoader<TextureCube,TextureCubeLoader> loader(device,auto_mipmaps);
|
||||
if(!tm||filename.IsEmpty())
|
||||
return(nullptr);
|
||||
|
||||
VkTextureLoader<TextureCube,TextureCubeLoader> loader(tm,auto_mipmaps);
|
||||
|
||||
if(!loader.Load(filename))
|
||||
return(nullptr);
|
||||
|
@ -1,8 +1,8 @@
|
||||
#pragma once
|
||||
#include<hgl/graph/VK.h>
|
||||
#include<hgl/graph/VKDevice.h>
|
||||
#include<hgl/graph/VKBuffer.h>
|
||||
#include<hgl/graph/VKTexture.h>
|
||||
#include<hgl/graph/TextureLoader.h>
|
||||
#include<hgl/graph/manager/TextureManager.h>
|
||||
#include<hgl/graph/VKTextureCreateInfo.h>
|
||||
|
||||
VK_NAMESPACE_BEGIN
|
||||
@ -10,7 +10,7 @@ template<typename T,typename TL> class VkTextureLoader:public TL
|
||||
{
|
||||
protected:
|
||||
|
||||
GPUDevice *device;
|
||||
TextureManager *tex_manager;
|
||||
DeviceBuffer *buf;
|
||||
T *tex;
|
||||
|
||||
@ -18,9 +18,9 @@ protected:
|
||||
|
||||
public:
|
||||
|
||||
VkTextureLoader(GPUDevice *dev,const bool am)
|
||||
VkTextureLoader(TextureManager *tm,const bool am)
|
||||
{
|
||||
device=dev;
|
||||
tex_manager=tm;
|
||||
buf=nullptr;
|
||||
tex=nullptr;
|
||||
auto_mipmaps=am;
|
||||
@ -39,7 +39,7 @@ public:
|
||||
if(!CheckVulkanFormat(tex_format))
|
||||
return(nullptr);
|
||||
|
||||
buf=device->CreateBuffer(VK_BUFFER_USAGE_TRANSFER_SRC_BIT,total_bytes);
|
||||
buf=tex_manager->CreateTransferSourceBuffer(total_bytes);
|
||||
|
||||
if(!buf)
|
||||
return(nullptr);
|
||||
@ -75,7 +75,7 @@ public:
|
||||
|
||||
if(auto_mipmaps&&tex_file_header.mipmaps<=1)
|
||||
{
|
||||
if(device->CheckFormatSupport(tex_format,VK_FORMAT_FEATURE_BLIT_DST_BIT))
|
||||
if(tex_manager->CheckFormatSupport(tex_format,VK_FORMAT_FEATURE_BLIT_DST_BIT))
|
||||
{
|
||||
tci->usage|=VK_IMAGE_USAGE_TRANSFER_SRC_BIT;
|
||||
tci->SetAutoMipmaps();
|
||||
|
Loading…
x
Reference in New Issue
Block a user