support C++20

This commit is contained in:
hyzboy 2024-07-26 03:24:44 +08:00
parent fdf073376c
commit 416b7bfcb3
7 changed files with 23 additions and 17 deletions

View File

@ -7,7 +7,7 @@ namespace hgl
namespace graph namespace graph
{ {
/** /**
* 2Dλͼ¼ÓÔØ * 2D位图加载类
*/ */
class Bitmap2DLoader:public Texture2DLoader class Bitmap2DLoader:public Texture2DLoader
{ {
@ -20,7 +20,7 @@ namespace hgl
Bitmap2DLoader():Texture2DLoader(){} Bitmap2DLoader():Texture2DLoader(){}
~Bitmap2DLoader(); ~Bitmap2DLoader();
void *OnBegin(uint32 total_bytes) override; void *OnBegin(uint32 total_bytes,const VkFormat &) override;
bool OnEnd() override {return(false);} bool OnEnd() override {return(false);}
BitmapData *GetBitmap(); BitmapData *GetBitmap();

View File

@ -85,10 +85,16 @@ namespace hgl
protected: protected:
virtual void *OnBegin(uint32)=0; virtual void *OnBegin(uint32,const VkFormat &)=0;
virtual bool OnEnd()=0; virtual bool OnEnd()=0;
virtual void OnError(){} virtual void OnError(){}
public:
const TextureFileHeader & GetFileHeader ()const{return file_header;}
const VkFormat & GetTextureFormat()const{return format;}
const uint32 GetZeroMipmapBytes()const{return mipmap_zero_total_bytes;}
public: public:
TextureLoader() TextureLoader()

View File

@ -9,7 +9,7 @@ namespace hgl
SAFE_CLEAR(bmp); SAFE_CLEAR(bmp);
} }
void *Bitmap2DLoader::OnBegin(uint32 total_bytes) void *Bitmap2DLoader::OnBegin(uint32 total_bytes,const VkFormat &)
{ {
SAFE_CLEAR(bmp); SAFE_CLEAR(bmp);

View File

@ -194,7 +194,7 @@ namespace hgl
{ {
if(file_header.pixel_format.compress_format<0 if(file_header.pixel_format.compress_format<0
||file_header.pixel_format.compress_format>=CompressFormatCount) ||file_header.pixel_format.compress_format>=CompressFormatCount)
return(nullptr); return(false);
format=CompressFormatList[file_header.pixel_format.compress_format]; format=CompressFormatList[file_header.pixel_format.compress_format];
} }
@ -213,7 +213,7 @@ namespace hgl
if(file_left_bytes<total_bytes) if(file_left_bytes<total_bytes)
return(false); return(false);
void *ptr=OnBegin(total_bytes); void *ptr=OnBegin(total_bytes,format);
if(!ptr) if(!ptr)
return(false); return(false);

View File

@ -22,6 +22,6 @@ Texture2D *CreateTexture2DFromFile(GPUDevice *device,const OSString &filename,bo
if(!loader.Load(filename)) if(!loader.Load(filename))
return(nullptr); return(nullptr);
return loader.CreateTexture(); return loader.CreateTexture(loader.GetFileHeader(),loader.GetTextureFormat(),loader.GetZeroMipmapBytes());
} }
VK_NAMESPACE_END VK_NAMESPACE_END

View File

@ -22,6 +22,6 @@ TextureCube *CreateTextureCubeFromFile(GPUDevice *device,const OSString &filenam
if(!loader.Load(filename)) if(!loader.Load(filename))
return(nullptr); return(nullptr);
return loader.CreateTexture(); return loader.CreateTexture(loader.GetFileHeader(),loader.GetTextureFormat(),loader.GetZeroMipmapBytes());
} }
VK_NAMESPACE_END VK_NAMESPACE_END

View File

@ -32,11 +32,11 @@ public:
SAFE_CLEAR(buf); SAFE_CLEAR(buf);
} }
void *OnBegin(uint32 total_bytes) override void *OnBegin(uint32 total_bytes,const VkFormat &tex_format) override
{ {
SAFE_CLEAR(buf); SAFE_CLEAR(buf);
if(!CheckVulkanFormat(format)) if(!CheckVulkanFormat(tex_format))
return(nullptr); return(nullptr);
buf=device->CreateBuffer(VK_BUFFER_USAGE_TRANSFER_SRC_BIT,total_bytes); buf=device->CreateBuffer(VK_BUFFER_USAGE_TRANSFER_SRC_BIT,total_bytes);
@ -61,9 +61,9 @@ public:
DeviceBuffer *GetBuffer(){return buf;} DeviceBuffer *GetBuffer(){return buf;}
T *CreateTexture() T *CreateTexture(const TextureFileHeader &tex_file_header,const VkFormat &tex_format,const uint32 top_mipmap_bytes)
{ {
TextureCreateInfo *tci=new TextureCreateInfo(format); TextureCreateInfo *tci=new TextureCreateInfo(tex_format);
VkExtent3D extent; VkExtent3D extent;
@ -71,11 +71,11 @@ public:
tci->SetData(buf,extent); tci->SetData(buf,extent);
tci->origin_mipmaps=file_header.mipmaps; tci->origin_mipmaps=tex_file_header.mipmaps;
if(auto_mipmaps&&file_header.mipmaps<=1) if(auto_mipmaps&&tex_file_header.mipmaps<=1)
{ {
if(device->CheckFormatSupport(format,VK_FORMAT_FEATURE_BLIT_DST_BIT)) if(device->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();
@ -83,10 +83,10 @@ public:
} }
else else
{ {
tci->target_mipmaps=file_header.mipmaps; tci->target_mipmaps=tex_file_header.mipmaps;
} }
tci->mipmap_zero_total_bytes=mipmap_zero_total_bytes; tci->mipmap_zero_total_bytes=top_mipmap_bytes;
SAFE_CLEAR(tex); SAFE_CLEAR(tex);
tex=OnCreateTexture(tci); tex=OnCreateTexture(tci);