first fix RGBA order

This commit is contained in:
hyzboy 2019-12-03 20:49:25 +08:00
parent 09f9f61829
commit 25c2ab644b
6 changed files with 37 additions and 35 deletions

View File

@ -96,8 +96,8 @@ bool TextureFileCreater::WriteFileHeader(const OSString &old_filename)
dos->WriteUint32(image->width()); dos->WriteUint32(image->width());
dos->WriteUint32(image->height()); dos->WriteUint32(image->height());
dos->WriteUint8(fmt->channels); //颜色通道数 dos->WriteUint8(fmt->channels); //颜色通道数
dos->WriteUint8((uint8 *)fmt->color,fmt->channels); //颜色标记 dos->WriteUint8((uint8 *)fmt->color,4); //颜色标记
dos->WriteUint8(fmt->bits,fmt->channels); //颜色位数 dos->WriteUint8(fmt->bits,4); //颜色位数
dos->WriteUint8((uint8)fmt->type); //数据类型 dos->WriteUint8((uint8)fmt->type); //数据类型
return(true); return(true);

View File

@ -12,9 +12,9 @@ public:
{ {
for(uint i=0;i<size;i++) for(uint i=0;i<size;i++)
{ {
*target=((src[2]<<8)&0xF800) *target=((src[0]<<8)&0xF800)
|((src[1]<<3)&0x7E0) |((src[1]<<3)&0x7E0)
| (src[0]>>3); | (src[2]>>3);
++target; ++target;
src+=3; src+=3;

View File

@ -12,10 +12,10 @@ public:
{ {
for(uint i=0;i<size;i++) for(uint i=0;i<size;i++)
{ {
*target=((src[3]<<8)&0xF000) *target=((src[0]<<8)&0xF000)
|((src[2]<<4)&0xF00) |((src[1]<<4)&0xF00)
|((src[1] )&0xF0) |((src[2] )&0xF0)
| (src[0]>>4); | (src[3]>>4);
++target; ++target;
src+=4; src+=4;
@ -27,9 +27,9 @@ public:
for(uint i=0;i<size;i++) for(uint i=0;i<size;i++)
{ {
*target=((src[3]<<8)&0x8000) *target=((src[3]<<8)&0x8000)
|((src[2]<<7)&0x7C00) |((src[0]<<7)&0x7C00)
|((src[1]<<2)&0x3E0) |((src[1]<<2)&0x3E0)
| (src[0]>>3); | (src[2]>>3);
++target; ++target;
src+=4; src+=4;
@ -41,9 +41,9 @@ public:
for(uint i=0;i<size;i++) for(uint i=0;i<size;i++)
{ {
*target=((src[3]<<16)&0xC0000000) *target=((src[3]<<16)&0xC0000000)
|((src[0]<<14)&0x3FF00000) |((src[2]<<14)&0x3FF00000)
|((src[1]<< 4)&0xFFC00) |((src[1]<< 4)&0xFFC00)
| (src[2]>> 6); | (src[0]>> 6);
++target; ++target;
src+=4; src+=4;
@ -54,8 +54,8 @@ public:
bool Write() override bool Write() override
{ {
if(fmt->format==ColorFormat::RGBA8UN if(fmt->format==ColorFormat::RGBA8
||fmt->format==ColorFormat::RGBA16UN ||fmt->format==ColorFormat::RGBA16
||fmt->format==ColorFormat::RGBA16F ||fmt->format==ColorFormat::RGBA16F
||fmt->format==ColorFormat::RGBA32U ||fmt->format==ColorFormat::RGBA32U
||fmt->format==ColorFormat::RGBA32I ||fmt->format==ColorFormat::RGBA32I
@ -90,7 +90,7 @@ public:
return TextureFileCreater::Write(a1_rgb5); return TextureFileCreater::Write(a1_rgb5);
} }
else if(fmt->format==ColorFormat::A2BGR10UN) else if(fmt->format==ColorFormat::A2BGR10)
{ {
void *origin_rgba=image->GetRGBA(IL_UNSIGNED_SHORT); void *origin_rgba=image->GetRGBA(IL_UNSIGNED_SHORT);

View File

@ -40,10 +40,10 @@ const PixelFormat *ParseParamFormat(const CmdParse &cmd,const os_char *flag,cons
void ParseParamFormat(const CmdParse &cmd) void ParseParamFormat(const CmdParse &cmd)
{ {
//指定格式 //指定格式
pixel_fmt[0]=ParseParamFormat(cmd,OS_TEXT("/R:"), GetPixelFormat(ColorFormat::R8UN)); pixel_fmt[0]=ParseParamFormat(cmd,OS_TEXT("/R:"), GetPixelFormat(ColorFormat::R8));
pixel_fmt[1]=ParseParamFormat(cmd,OS_TEXT("/RG:"), GetPixelFormat(ColorFormat::RG8UN)); pixel_fmt[1]=ParseParamFormat(cmd,OS_TEXT("/RG:"), GetPixelFormat(ColorFormat::RG8));
pixel_fmt[2]=ParseParamFormat(cmd,OS_TEXT("/RGB:"), GetPixelFormat(ColorFormat::RGB565)); pixel_fmt[2]=ParseParamFormat(cmd,OS_TEXT("/RGB:"), GetPixelFormat(ColorFormat::RGB565));
pixel_fmt[3]=ParseParamFormat(cmd,OS_TEXT("/RGBA:"), GetPixelFormat(ColorFormat::RGBA8UN)); pixel_fmt[3]=ParseParamFormat(cmd,OS_TEXT("/RGBA:"), GetPixelFormat(ColorFormat::RGBA8));
for(uint i=0;i<4;i++) for(uint i=0;i<4;i++)
std::cout<<(i+1)<<": "<<pixel_fmt[i]->name<<std::endl; std::cout<<(i+1)<<": "<<pixel_fmt[i]->name<<std::endl;

View File

@ -16,7 +16,8 @@ namespace hgl
"UINT", "UINT",
"SINT", "SINT",
"UFLOAT", "UFLOAT",
"SFLOAT" "SFLOAT",
"sRGB"
}; };
constexpr PixelFormat pf_list[]= constexpr PixelFormat pf_list[]=
@ -24,15 +25,15 @@ namespace hgl
{ColorFormat::BGRA4, "BGRA4", 4,{'B','G','R','A'},{ 4, 4, 4, 4},ColorDataType::UNORM}, {ColorFormat::BGRA4, "BGRA4", 4,{'B','G','R','A'},{ 4, 4, 4, 4},ColorDataType::UNORM},
{ColorFormat::RGB565, "RGB565", 3,{'R','G','B', 0 },{ 5, 6, 5, 0},ColorDataType::UNORM}, {ColorFormat::RGB565, "RGB565", 3,{'R','G','B', 0 },{ 5, 6, 5, 0},ColorDataType::UNORM},
{ColorFormat::A1RGB5, "A1RGB5", 4,{'A','R','G','B'},{ 1, 5, 5, 5},ColorDataType::UNORM}, {ColorFormat::A1RGB5, "A1RGB5", 4,{'A','R','G','B'},{ 1, 5, 5, 5},ColorDataType::UNORM},
{ColorFormat::R8UN, "R8UN", 1,{'R', 0 , 0 , 0 },{ 8, 0, 0, 0},ColorDataType::UNORM}, {ColorFormat::R8, "R8", 1,{'R', 0 , 0 , 0 },{ 8, 0, 0, 0},ColorDataType::UNORM},
{ColorFormat::RG8UN, "RG8UN", 2,{'R','G', 0 , 0 },{ 8, 8, 0, 0},ColorDataType::UNORM}, {ColorFormat::RG8, "RG8", 2,{'R','G', 0 , 0 },{ 8, 8, 0, 0},ColorDataType::UNORM},
{ColorFormat::RGBA8UN, "RGBA8UN", 4,{'R','G','B','A'},{ 8, 8, 8, 8},ColorDataType::UNORM}, {ColorFormat::RGBA8, "RGBA8", 4,{'R','G','B','A'},{ 8, 8, 8, 8},ColorDataType::UNORM},
{ColorFormat::A2BGR10UN, "A2BGR10UN", 4,{'A','B','G','R'},{ 2,10,10,10},ColorDataType::UNORM}, {ColorFormat::A2BGR10, "A2BGR10", 4,{'A','B','G','R'},{ 2,10,10,10},ColorDataType::UNORM},
{ColorFormat::R16UN, "R16UN", 1,{'R', 0 , 0 , 0 },{16, 0, 0, 0},ColorDataType::UNORM}, {ColorFormat::R16, "R16", 1,{'R', 0 , 0 , 0 },{16, 0, 0, 0},ColorDataType::UNORM},
{ColorFormat::R16F, "R16F", 1,{'R', 0 , 0 , 0 },{16, 0, 0, 0},ColorDataType::SFLOAT}, {ColorFormat::R16F, "R16F", 1,{'R', 0 , 0 , 0 },{16, 0, 0, 0},ColorDataType::SFLOAT},
{ColorFormat::RG16UN, "RG16UN", 2,{'R','G', 0 , 0 },{16,16, 0, 0},ColorDataType::UNORM}, {ColorFormat::RG16, "RG16", 2,{'R','G', 0 , 0 },{16,16, 0, 0},ColorDataType::UNORM},
{ColorFormat::RG16F, "RG16F", 2,{'R','G', 0 , 0 },{16,16, 0, 0},ColorDataType::SFLOAT}, {ColorFormat::RG16F, "RG16F", 2,{'R','G', 0 , 0 },{16,16, 0, 0},ColorDataType::SFLOAT},
{ColorFormat::RGBA16UN, "RGBA16UN", 4,{'R','G','B','A'},{16,16,16,16},ColorDataType::UNORM}, {ColorFormat::RGBA16, "RGBA16", 4,{'R','G','B','A'},{16,16,16,16},ColorDataType::UNORM},
{ColorFormat::RGBA16F, "RGBA16F", 4,{'R','G','B','A'},{16,16,16,16},ColorDataType::SFLOAT}, {ColorFormat::RGBA16F, "RGBA16F", 4,{'R','G','B','A'},{16,16,16,16},ColorDataType::SFLOAT},
{ColorFormat::R32U, "R32U", 1,{'R', 0 , 0 , 0 },{32, 0, 0, 0},ColorDataType::UINT}, {ColorFormat::R32U, "R32U", 1,{'R', 0 , 0 , 0 },{32, 0, 0, 0},ColorDataType::UINT},
{ColorFormat::R32I, "R32I", 1,{'R', 0 , 0 , 0 },{32, 0, 0, 0},ColorDataType::SINT}, {ColorFormat::R32I, "R32I", 1,{'R', 0 , 0 , 0 },{32, 0, 0, 0},ColorDataType::SINT},

View File

@ -11,15 +11,15 @@ enum class ColorFormat
BGRA4, BGRA4,
RGB565, RGB565,
A1RGB5, A1RGB5,
R8UN, R8,
RG8UN, RG8,
RGBA8UN, RGBA8,
A2BGR10UN, A2BGR10,
R16UN, R16,
R16F, R16F,
RG16UN, RG16,
RG16F, RG16F,
RGBA16UN, RGBA16,
RGBA16F, RGBA16F,
R32U, R32U,
R32I, R32I,
@ -43,12 +43,13 @@ enum class ColorDataType
UNORM, UNORM,
SNORM, SNORM,
UINT,
SINT,
USCALE, USCALE,
SSCALE, SSCALE,
UINT,
SINT,
UFLOAT, UFLOAT,
SFLOAT, SFLOAT,
SRGB,
END END
};//enum class ColorDataType };//enum class ColorDataType