handle other texture formats

This commit is contained in:
tildearrow 2024-05-15 04:08:50 -05:00
parent f51ad1cf1f
commit a4cba0f05c
16 changed files with 135 additions and 2 deletions

View file

@ -101,6 +101,44 @@ FurnaceGUIImage* FurnaceGUI::getImage(FurnaceGUIImages image) {
}
#endif
if (ret->ch==4) {
size_t total=ret->width*ret->height*ret->ch;
switch (bestTexFormat) {
case GUI_TEXFORMAT_ARGB32:
for (size_t i=0; i<total; i+=4) {
ret->data[i]^=ret->data[i|2];
ret->data[i|2]^=ret->data[i];
ret->data[i]^=ret->data[i|2];
}
break;
case GUI_TEXFORMAT_BGRA32:
for (size_t i=0; i<total; i+=4) {
ret->data[i]^=ret->data[i|3];
ret->data[i|3]^=ret->data[i];
ret->data[i]^=ret->data[i|3];
ret->data[i|1]^=ret->data[i|2];
ret->data[i|2]^=ret->data[i|1];
ret->data[i|1]^=ret->data[i|2];
ret->data[i|1]^=ret->data[i|3];
ret->data[i|3]^=ret->data[i|1];
ret->data[i|1]^=ret->data[i|3];
}
break;
case GUI_TEXFORMAT_RGBA32:
for (size_t i=0; i<total; i+=4) {
ret->data[i]^=ret->data[i|3];
ret->data[i|3]^=ret->data[i];
ret->data[i]^=ret->data[i|3];
ret->data[i|1]^=ret->data[i|2];
ret->data[i|2]^=ret->data[i|1];
ret->data[i|1]^=ret->data[i|2];
}
break;
default:
break;
}
}
images[image]=ret;
}