mirror of
https://github.com/bkaradzic/bx.git
synced 2026-02-17 20:52:37 +01:00
pixelformat: Add pack and unpack for B5G6R5 (#281)
* pixelformat: Add pack and unpack for B5G6R5 Invert R5G6B5 and B5G6R5 * pixelformat: Fix typo in BGRA4
This commit is contained in:
@@ -823,8 +823,8 @@ namespace bx
|
||||
memCopy(_dst, _src, 16);
|
||||
}
|
||||
|
||||
// R5G6B5
|
||||
inline void packR5G6B5(void* _dst, const float* _src)
|
||||
// B5G6R5
|
||||
inline void packB5G6R5(void* _dst, const float* _src)
|
||||
{
|
||||
*( (uint16_t*)_dst) = 0
|
||||
| uint16_t(toUnorm(_src[0], 31.0f)<<11)
|
||||
@@ -833,7 +833,7 @@ namespace bx
|
||||
;
|
||||
}
|
||||
|
||||
inline void unpackR5G6B5(float* _dst, const void* _src)
|
||||
inline void unpackB5G6R5(float* _dst, const void* _src)
|
||||
{
|
||||
uint16_t packed = *( (const uint16_t*)_src);
|
||||
_dst[0] = float( ( (packed>>11) & 0x1f) ) / 31.0f;
|
||||
@@ -842,6 +842,25 @@ namespace bx
|
||||
_dst[3] = 1.0f;
|
||||
}
|
||||
|
||||
// R5G6B5
|
||||
inline void packR5G6B5(void* _dst, const float* _src)
|
||||
{
|
||||
*( (uint16_t*)_dst) = 0
|
||||
| uint16_t(toUnorm(_src[0], 31.0f) )
|
||||
| uint16_t(toUnorm(_src[1], 63.0f)<< 5)
|
||||
| uint16_t(toUnorm(_src[2], 31.0f)<<11)
|
||||
;
|
||||
}
|
||||
|
||||
inline void unpackR5G6B5(float* _dst, const void* _src)
|
||||
{
|
||||
uint16_t packed = *( (const uint16_t*)_src);
|
||||
_dst[0] = float( ( (packed ) & 0x1f) ) / 31.0f;
|
||||
_dst[1] = float( ( (packed>> 5) & 0x3f) ) / 63.0f;
|
||||
_dst[2] = float( ( (packed>>11) & 0x1f) ) / 31.0f;
|
||||
_dst[3] = 1.0f;
|
||||
}
|
||||
|
||||
// RGBA4
|
||||
inline void packRgba4(void* _dst, const float* _src)
|
||||
{
|
||||
@@ -862,7 +881,7 @@ namespace bx
|
||||
_dst[3] = float( ( (packed>>12) & 0xf) ) / 15.0f;
|
||||
}
|
||||
|
||||
// RGBA4
|
||||
// BGRA4
|
||||
inline void packBgra4(void* _dst, const float* _src)
|
||||
{
|
||||
*( (uint16_t*)_dst) = 0
|
||||
|
||||
@@ -209,6 +209,10 @@ namespace bx
|
||||
void packRgba32F(void* _dst, const float* _src);
|
||||
void unpackRgba32F(float* _dst, const void* _src);
|
||||
|
||||
// B5G6R5
|
||||
void packB5G6R5(void* _dst, const float* _src);
|
||||
void unpackB5G6R5(float* _dst, const void* _src);
|
||||
|
||||
// R5G6B5
|
||||
void packR5G6B5(void* _dst, const float* _src);
|
||||
void unpackR5G6B5(float* _dst, const void* _src);
|
||||
@@ -217,7 +221,7 @@ namespace bx
|
||||
void packRgba4(void* _dst, const float* _src);
|
||||
void unpackRgba4(float* _dst, const void* _src);
|
||||
|
||||
// RGBA4
|
||||
// BGRA4
|
||||
void packBgra4(void* _dst, const float* _src);
|
||||
void unpackBgra4(float* _dst, const void* _src);
|
||||
|
||||
|
||||
Reference in New Issue
Block a user