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;
|
DeviceQueue *texture_queue;
|
||||||
TextureCmdBuffer *texture_cmd_buf;
|
TextureCmdBuffer *texture_cmd_buf;
|
||||||
|
|
||||||
protected:
|
|
||||||
|
|
||||||
DeviceBuffer *CreateTransferSourceBuffer(const VkDeviceSize,const void *data_ptr=nullptr);
|
|
||||||
|
|
||||||
public:
|
public:
|
||||||
|
|
||||||
TextureManager();
|
TextureManager();
|
||||||
virtual ~TextureManager();
|
virtual ~TextureManager();
|
||||||
|
|
||||||
|
public: //Buffer
|
||||||
|
|
||||||
|
DeviceBuffer *CreateTransferSourceBuffer(const VkDeviceSize,const void *data_ptr=nullptr);
|
||||||
|
|
||||||
public: //Image
|
public: //Image
|
||||||
|
|
||||||
VkImage CreateImage (VkImageCreateInfo *);
|
VkImage CreateImage (VkImageCreateInfo *);
|
||||||
|
@ -1,6 +1,8 @@
|
|||||||
#include"VKTextureLoader.h"
|
#include"VKTextureLoader.h"
|
||||||
#include<hgl/io/FileInputStream.h>
|
#include<hgl/io/FileInputStream.h>
|
||||||
#include<hgl/log/LogInfo.h>
|
#include<hgl/log/LogInfo.h>
|
||||||
|
#include<hgl/graph/VKTexture.h>
|
||||||
|
#include<hgl/graph/manager/TextureManager.h>
|
||||||
|
|
||||||
VK_NAMESPACE_BEGIN
|
VK_NAMESPACE_BEGIN
|
||||||
//template<> void VkTextureLoader<Texture2DArray,Texture2DArrayLoader>::OnExtent(VkExtent3D &extent)
|
//template<> void VkTextureLoader<Texture2DArray,Texture2DArrayLoader>::OnExtent(VkExtent3D &extent)
|
||||||
@ -15,10 +17,13 @@ VK_NAMESPACE_BEGIN
|
|||||||
// return device->CreateTexture2DArray(tci);
|
// 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纹理
|
//注:依然是Texture2D,则非Texture2DArray。因为这里LOAD的是2D纹理,并不是2DArray纹理
|
||||||
VkTextureLoader<Texture2D,Texture2DLoader> loader(device,auto_mipmaps);
|
VkTextureLoader<Texture2D,Texture2DLoader> loader(tm,auto_mipmaps);
|
||||||
|
|
||||||
if(!loader.Load(filename))
|
if(!loader.Load(filename))
|
||||||
return(false);
|
return(false);
|
||||||
@ -33,6 +38,6 @@ bool LoadTexture2DLayerFromFile(GPUDevice *device,Texture2DArray *ta,const uint3
|
|||||||
scope.Width=ta->GetWidth();
|
scope.Width=ta->GetWidth();
|
||||||
scope.Height=ta->GetHeight();
|
scope.Height=ta->GetHeight();
|
||||||
|
|
||||||
return device->ChangeTexture2DArray(ta,buf,scope,layer,1);
|
return tm->ChangeTexture2DArray(ta,buf,scope,layer,1);
|
||||||
}
|
}
|
||||||
VK_NAMESPACE_END
|
VK_NAMESPACE_END
|
||||||
|
@ -12,12 +12,15 @@ template<> void VkTextureLoader<Texture2D,Texture2DLoader>::OnExtent(VkExtent3D
|
|||||||
|
|
||||||
template<> Texture2D *VkTextureLoader<Texture2D,Texture2DLoader>::OnCreateTexture(TextureCreateInfo *tci)
|
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))
|
if(!loader.Load(filename))
|
||||||
return(nullptr);
|
return(nullptr);
|
||||||
|
@ -12,12 +12,15 @@ template<> void VkTextureLoader<TextureCube,TextureCubeLoader>::OnExtent(VkExten
|
|||||||
|
|
||||||
template<> TextureCube *VkTextureLoader<TextureCube,TextureCubeLoader>::OnCreateTexture(TextureCreateInfo *tci)
|
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))
|
if(!loader.Load(filename))
|
||||||
return(nullptr);
|
return(nullptr);
|
||||||
|
@ -1,8 +1,8 @@
|
|||||||
#pragma once
|
#pragma once
|
||||||
#include<hgl/graph/VK.h>
|
|
||||||
#include<hgl/graph/VKDevice.h>
|
|
||||||
#include<hgl/graph/VKBuffer.h>
|
#include<hgl/graph/VKBuffer.h>
|
||||||
|
#include<hgl/graph/VKTexture.h>
|
||||||
#include<hgl/graph/TextureLoader.h>
|
#include<hgl/graph/TextureLoader.h>
|
||||||
|
#include<hgl/graph/manager/TextureManager.h>
|
||||||
#include<hgl/graph/VKTextureCreateInfo.h>
|
#include<hgl/graph/VKTextureCreateInfo.h>
|
||||||
|
|
||||||
VK_NAMESPACE_BEGIN
|
VK_NAMESPACE_BEGIN
|
||||||
@ -10,7 +10,7 @@ template<typename T,typename TL> class VkTextureLoader:public TL
|
|||||||
{
|
{
|
||||||
protected:
|
protected:
|
||||||
|
|
||||||
GPUDevice *device;
|
TextureManager *tex_manager;
|
||||||
DeviceBuffer *buf;
|
DeviceBuffer *buf;
|
||||||
T *tex;
|
T *tex;
|
||||||
|
|
||||||
@ -18,9 +18,9 @@ protected:
|
|||||||
|
|
||||||
public:
|
public:
|
||||||
|
|
||||||
VkTextureLoader(GPUDevice *dev,const bool am)
|
VkTextureLoader(TextureManager *tm,const bool am)
|
||||||
{
|
{
|
||||||
device=dev;
|
tex_manager=tm;
|
||||||
buf=nullptr;
|
buf=nullptr;
|
||||||
tex=nullptr;
|
tex=nullptr;
|
||||||
auto_mipmaps=am;
|
auto_mipmaps=am;
|
||||||
@ -39,7 +39,7 @@ public:
|
|||||||
if(!CheckVulkanFormat(tex_format))
|
if(!CheckVulkanFormat(tex_format))
|
||||||
return(nullptr);
|
return(nullptr);
|
||||||
|
|
||||||
buf=device->CreateBuffer(VK_BUFFER_USAGE_TRANSFER_SRC_BIT,total_bytes);
|
buf=tex_manager->CreateTransferSourceBuffer(total_bytes);
|
||||||
|
|
||||||
if(!buf)
|
if(!buf)
|
||||||
return(nullptr);
|
return(nullptr);
|
||||||
@ -75,7 +75,7 @@ public:
|
|||||||
|
|
||||||
if(auto_mipmaps&&tex_file_header.mipmaps<=1)
|
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->usage|=VK_IMAGE_USAGE_TRANSFER_SRC_BIT;
|
||||||
tci->SetAutoMipmaps();
|
tci->SetAutoMipmaps();
|
||||||
|
Loading…
x
Reference in New Issue
Block a user