// ------------------------------------------------------------------------------------------------
Texture2D* TextureManager::newTexture2DFromDetails(const TextureDetails* _texDetails)
{
    Texture2D* retTex = allocTexture2D(_texDetails->szMipMapCount, _texDetails->glFormat, _texDetails->dwWidth, _texDetails->dwHeight);
    retTex->commit();

    size_t offset = 0;
    for (int mip = 0; mip < _texDetails->szMipMapCount; ++mip) {
        retTex->CompressedTexSubImage2D(mip, 0, 0, _texDetails->MipMapWidth(mip), _texDetails->MipMapHeight(mip), _texDetails->glFormat, _texDetails->pSizes[mip], (char*)_texDetails->pPixels + offset);
        offset += _texDetails->pSizes[mip];
    }

    return retTex;
}