diff --git a/include/bx/inline/pixelformat.inl b/include/bx/inline/pixelformat.inl index 856a2a8..ac35ecc 100644 --- a/include/bx/inline/pixelformat.inl +++ b/include/bx/inline/pixelformat.inl @@ -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 diff --git a/include/bx/pixelformat.h b/include/bx/pixelformat.h index ac08cf3..c556b01 100644 --- a/include/bx/pixelformat.h +++ b/include/bx/pixelformat.h @@ -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);