TexConv/TextureFileCreaterRG.cpp

43 lines
1.0 KiB
C++
Raw Normal View History

2019-12-05 10:00:07 +08:00
#include"TextureFileCreater.h"
2019-12-02 22:10:49 +08:00
#include"ILImage.h"
2021-11-29 15:28:37 +08:00
#include<iostream>
2019-12-02 22:10:49 +08:00
class TextureFileCreaterRG:public TextureFileCreater
{
2020-10-25 21:22:18 +08:00
ILuint type;
2019-12-02 22:10:49 +08:00
public:
using TextureFileCreater::TextureFileCreater;
public:
bool InitFormat(ILImage *img) override
2019-12-02 22:10:49 +08:00
{
image=img;
2020-10-25 21:22:18 +08:00
if(!ToILType(type,pixel_format->bits[0],pixel_format->type))
return(false);
return image->ConvertToRG(type);
}
2019-12-02 22:10:49 +08:00
2020-10-25 21:22:18 +08:00
uint32 Write() override
{
const uint total_bytes=(pixel_format->total_bits*image->pixel_total())>>3;
std::cout<<"Convert Image To: "<<image->width()<<"x"<<image->height()<<" "<<total_bytes<<" bytes."<<std::endl;
2019-12-02 22:10:49 +08:00
void *data=image->GetRG(type);
//目前仅有R8UN,R16UN,R16F,R32U,R32I,R32F几种都是8的整倍数所以直接写
2019-12-05 10:00:07 +08:00
2020-10-25 21:22:18 +08:00
return TextureFileCreater::Write(data,total_bytes);
2019-12-02 22:10:49 +08:00
}
};//class TextureFileCreaterRG:public TextureFileCreater
TextureFileCreater *CreateTextureFileCreaterRG(const PixelFormat *pf)
2019-12-02 22:10:49 +08:00
{
return(new TextureFileCreaterRG(pf));
2019-12-02 22:10:49 +08:00
}