mirror of
https://git.mirrors.martin98.com/https://github.com/syoyo/tinygltf.git
synced 2025-07-07 06:51:50 +08:00
Merge pull request #148 from Ybalrid/16bit-lodepng-good-byteswap
When writing out a 16bit image with lodepng, simplify the byteswap to big-endian
This commit is contained in:
commit
8f76d790b8
@ -44,21 +44,11 @@ static void ToBigEndian(std::vector<uint8_t>* image) {
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
auto swap2 =
|
|
||||||
[](uint16_t* val) {
|
|
||||||
uint16_t tmp = *val;
|
|
||||||
uint8_t* dst = reinterpret_cast<uint8_t*>(val);
|
|
||||||
uint8_t* src = reinterpret_cast<uint8_t*>(&tmp);
|
|
||||||
|
|
||||||
dst[0] = src[1];
|
|
||||||
dst[1] = src[0];
|
|
||||||
};
|
|
||||||
|
|
||||||
uint16_t *ptr = reinterpret_cast<uint16_t *>(image->data());
|
uint16_t *ptr = reinterpret_cast<uint16_t *>(image->data());
|
||||||
size_t n = image->size() / 2;
|
size_t n = image->size() / 2;
|
||||||
|
|
||||||
for (size_t i = 0; i < n; i++) {
|
for (size_t i = 0; i < n; i++) {
|
||||||
swap2(&ptr[i]);
|
ptr[i] = ((0xFF00 & ptr[i]) >> 8) | ((0x00FF & ptr[i]) << 8);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user