void CPicture::LoadDDS( CDataStream& dataStream ) { char const* header = (char const*)dataStream.GetCursorData() + 4; m_height = *(unsigned int*)&(header[8]); m_width = *(unsigned int*)&(header[12]); unsigned int linearSize = *(unsigned int*)&(header[16]); m_mipMapCount = *(unsigned int*)&(header[24]); unsigned int fourCC = *(unsigned int*)&(header[80]); m_pPixelData = const_cast<char*>(header) + 124; switch (fourCC) { case FOURCC_DXT1: m_format = ePF_R8G8B8A8_DTX1; break; case FOURCC_DXT3: m_format = ePF_R8G8B8A8_DTX3; break; case FOURCC_DXT5: m_format = ePF_R8G8B8A8_DTX5; break; default: break; // free } }
void CPicture::LoadPNG( CDataStream& dataStream ) { lodepng_decode_memory( (unsigned char**)&m_pPixelData, &m_width, &m_height, (unsigned char*)dataStream.GetCursorData(), dataStream.GetSize(), LodePNGColorType::LCT_RGBA, 8 ); m_format = ePF_R8G8B8A8; m_mipMapCount = 0; }