TexConv/TextureFileCreaterRG.cpp

43 lines
1.0 KiB
C++
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

#include"TextureFileCreater.h"
#include"ILImage.h"
#include<iostream>
class TextureFileCreaterRG:public TextureFileCreater
{
ILuint type;
public:
using TextureFileCreater::TextureFileCreater;
public:
bool InitFormat(ILImage *img) override
{
image=img;
if(!ToILType(type,pixel_format->bits[0],pixel_format->type))
return(false);
return image->ConvertToRG(type);
}
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;
void *data=image->GetRG(type);
//目前仅有R8UN,R16UN,R16F,R32U,R32I,R32F几种都是8的整倍数所以直接写
return TextureFileCreater::Write(data,total_bytes);
}
};//class TextureFileCreaterRG:public TextureFileCreater
TextureFileCreater *CreateTextureFileCreaterRG(const PixelFormat *pf)
{
return(new TextureFileCreaterRG(pf));
}