diff --git a/include/bimg/bimg.h b/include/bimg/bimg.h index 4647cd9..336b8ba 100644 --- a/include/bimg/bimg.h +++ b/include/bimg/bimg.h @@ -348,6 +348,7 @@ namespace bimg void* _dst , uint32_t _height , uint32_t _srcPitch + , uint32_t _depth , const void* _src , uint32_t _dstPitch ); @@ -357,6 +358,7 @@ namespace bimg void* _dst , uint32_t _width , uint32_t _height + , uint32_t _depth , uint32_t _bpp , uint32_t _srcPitch , const void* _src diff --git a/src/image.cpp b/src/image.cpp index a37abd5..0249ea8 100644 --- a/src/image.cpp +++ b/src/image.cpp @@ -702,19 +702,22 @@ namespace bimg } } - void imageCopy(void* _dst, uint32_t _height, uint32_t _srcPitch, const void* _src, uint32_t _dstPitch) + void imageCopy(void* _dst, uint32_t _height, uint32_t _srcPitch, uint32_t _depth, const void* _src, uint32_t _dstPitch) { const uint32_t pitch = bx::uint32_min(_srcPitch, _dstPitch); const uint8_t* src = (uint8_t*)_src; uint8_t* dst = (uint8_t*)_dst; - bx::memCopy(dst, src, pitch, _height, _srcPitch, _dstPitch); + for (uint32_t zz = 0; zz < _depth; ++zz, src += _srcPitch*_height, dst += _dstPitch*_height) + { + bx::memCopy(dst, src, pitch, _height, _srcPitch, _dstPitch); + } } - void imageCopy(void* _dst, uint32_t _width, uint32_t _height, uint32_t _bpp, uint32_t _srcPitch, const void* _src) + void imageCopy(void* _dst, uint32_t _width, uint32_t _height, uint32_t _depth, uint32_t _bpp, uint32_t _srcPitch, const void* _src) { const uint32_t dstPitch = _width*_bpp/8; - imageCopy(_dst, _height, _srcPitch, _src, dstPitch); + imageCopy(_dst, _height, _srcPitch, _depth, _src, dstPitch); } struct PackUnpack