TexConv/TextureFileCreater.h

54 lines
1.5 KiB
C
Raw Normal View History

2019-12-02 22:10:49 +08:00
#pragma once
#include"ILImage.h"
#include"pixel_format.h"
2021-12-13 13:47:08 +08:00
#include<vulkan/vulkan.h>
2019-12-02 22:10:49 +08:00
#include<hgl/io/FileOutputStream.h>
#include<hgl/io/DataOutputStream.h>
using namespace hgl;
2022-06-23 18:33:52 +08:00
bool ToILType(ILuint &type,const uint8 bits,const hgl::graph::VulkanNumberType cdt);
2019-12-02 22:10:49 +08:00
class TextureFileCreater
{
protected:
ILImage *image;
const PixelFormat *pixel_format;
2019-12-02 22:10:49 +08:00
protected:
OSString filename;
io::FileOutputStream fos;
io::DataOutputStream *dos;
2020-10-25 21:22:18 +08:00
uint32 Write(void *,const uint);
2019-12-02 22:10:49 +08:00
public:
TextureFileCreater(const PixelFormat *pf);
2019-12-02 22:10:49 +08:00
virtual ~TextureFileCreater();
2021-12-13 13:47:08 +08:00
virtual bool CreateTexFile(const OSString &, const VkImageViewType &);
virtual bool WriteSize1D(const uint32 length);
virtual bool WriteSize2D(const uint32 width,const uint32 height);
virtual bool WriteSize3D(const uint32 width,const uint32 height,const uint32 depth);
bool WriteSizeCube(const uint32 width,const uint32 height){return WriteSize2D(width,height);}
virtual bool WriteSize1DArray(const uint32 length,const uint32 layers);
virtual bool WriteSize2DArray(const uint32 width,const uint32 height,const uint32 layers);
bool WriteSizeCubeArray(const uint32 width,const uint32 height,const uint32 layers){return WriteSize2DArray(width,height,layers);}
virtual bool WritePixelFormat(const uint miplevel);
2019-12-02 22:10:49 +08:00
virtual bool InitFormat(ILImage *)=0;
2020-10-25 21:22:18 +08:00
virtual uint32 Write()=0;
2019-12-02 22:10:49 +08:00
virtual void Close();
virtual void Delete();
2020-10-25 21:22:18 +08:00
};//class TextureFileCreater
TextureFileCreater *CreateTFC(const PixelFormat *,const int channels);