Răsfoiți Sursa

Fixed KTX parsing.

Branimir Karadžić 8 ani în urmă
părinte
comite
a77bab5a92
2 a modificat fișierele cu 20 adăugiri și 1 ștergeri
  1. 4 0
      src/bgfx.cpp
  2. 16 1
      src/image.cpp

+ 4 - 0
src/bgfx.cpp

@@ -1289,8 +1289,12 @@ namespace bgfx
 		TextureFormat::ETC2,
 		TextureFormat::ETC2A,
 		TextureFormat::ETC2A1,
+		TextureFormat::PTC12,
 		TextureFormat::PTC14,
+		TextureFormat::PTC12A,
 		TextureFormat::PTC14A,
+		TextureFormat::PTC22,
+		TextureFormat::PTC24,
 		TextureFormat::BGRA8, // GL doesn't support BGRA8 without extensions.
 		TextureFormat::RGBA8, // D3D9 doesn't support RGBA8
 	};

+ 16 - 1
src/image.cpp

@@ -906,9 +906,24 @@ namespace bgfx
 			, imageContainer.m_numLayers
 			, imageContainer.m_cubeMap
 			, 1 < imageContainer.m_numMips
-			, (uint8_t*)_src + imageContainer.m_offset
 			);
 
+		const uint16_t numSides = imageContainer.m_numLayers * (imageContainer.m_cubeMap ? 6 : 1);
+		uint8_t* dst = (uint8_t*)output->m_data;
+
+		for (uint16_t side = 0; side < numSides; ++side)
+		{
+			for (uint8_t lod = 0, num = imageContainer.m_numMips; lod < num; ++lod)
+			{
+				ImageMip mip;
+				if (imageGetRawData(imageContainer, side, lod, _src, _size, mip) )
+				{
+					bx::memCopy(dst, mip.m_data, mip.m_size);
+					dst += mip.m_size;
+				}
+			}
+		}
+
 		return output;
 	}