Browse Source

Fixed depth reading for specific formats

MarcoROG 8 years ago
parent
commit
5e52f1ba0b
1 changed files with 5 additions and 2 deletions
  1. 5 2
      Source/BansheeCore/Source/BsPixelUtil.cpp

+ 5 - 2
Source/BansheeCore/Source/BsPixelUtil.cpp

@@ -1434,6 +1434,7 @@ namespace bs
 		}
 		}
 		
 		
 		UINT32* color = (UINT32 *)src;
 		UINT32* color = (UINT32 *)src;
+		UINT32 masked = 0;
 		switch (format) 
 		switch (format) 
 		{
 		{
 		case PF_D24S8:
 		case PF_D24S8:
@@ -1443,10 +1444,12 @@ namespace bs
 			return static_cast<float>(*color & 0xFFFF) / (float)65536;
 			return static_cast<float>(*color & 0xFFFF) / (float)65536;
 			break;
 			break;
 		case PF_D32:
 		case PF_D32:
-			return static_cast<float>(*color & 0xFFFFFFFF) / (float)4294967296;
+			masked = *color & 0xFFFFFFFF;
+			return *((float*)&masked);
 			break;
 			break;
 		case PF_D32_S8X24:
 		case PF_D32_S8X24:
-			return static_cast<float>(*color & 0xFFFFFFFF) / (float)4294967296;
+			masked = *color & 0xFFFFFFFF;
+			return *( (float*) &masked );
 			break;
 			break;
 		default:
 		default:
 			LOGERR("Cannot unpack from " + getFormatName(format));
 			LOGERR("Cannot unpack from " + getFormatName(format));