Ver Fonte

Added image copy for depth images.

Branimir Karadžić há 8 anos atrás
pai
commit
501c8b6cb2
2 ficheiros alterados com 9 adições e 4 exclusões
  1. 2 0
      include/bimg/bimg.h
  2. 7 4
      src/image.cpp

+ 2 - 0
include/bimg/bimg.h

@@ -348,6 +348,7 @@ namespace bimg
 		  void* _dst
 		  void* _dst
 		, uint32_t _height
 		, uint32_t _height
 		, uint32_t _srcPitch
 		, uint32_t _srcPitch
+		, uint32_t _depth
 		, const void* _src
 		, const void* _src
 		, uint32_t _dstPitch
 		, uint32_t _dstPitch
 		);
 		);
@@ -357,6 +358,7 @@ namespace bimg
 		  void* _dst
 		  void* _dst
 		, uint32_t _width
 		, uint32_t _width
 		, uint32_t _height
 		, uint32_t _height
+		, uint32_t _depth
 		, uint32_t _bpp
 		, uint32_t _bpp
 		, uint32_t _srcPitch
 		, uint32_t _srcPitch
 		, const void* _src
 		, const void* _src

+ 7 - 4
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 uint32_t pitch = bx::uint32_min(_srcPitch, _dstPitch);
 		const uint8_t* src = (uint8_t*)_src;
 		const uint8_t* src = (uint8_t*)_src;
 		uint8_t* dst = (uint8_t*)_dst;
 		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;
 		const uint32_t dstPitch = _width*_bpp/8;
-		imageCopy(_dst, _height, _srcPitch, _src, dstPitch);
+		imageCopy(_dst, _height, _srcPitch, _depth, _src, dstPitch);
 	}
 	}
 
 
 	struct PackUnpack
 	struct PackUnpack