Fix mip map size calculation for non-square textures

The size of a mip map is `max{floor(width / 2 ^ level), 1} x max{floor(height / 2 ^ level), 1}`,
where `width x height` is the size of the full-resolution image,
`level` is the integer mip map level
and the smallest mip map has `1 x 1` resolution.
If `regenerateMipMapLevels` is called with custom mip map data,
the mip map sizes are calculated in this function and separately in `uploadTexture`.
`uploadTexture` calculates a size by `floor(width / 2 ^ level) x floor(height / 2 ^ level)`.

To support non-square textures, after this change,
`uploadTexture` sets the mip map width or height to `1` if it is `0`.
This commit is contained in:
HybridDog 2024-01-05 12:07:30 +01:00 committed by sfan5
parent 91e4129615
commit fb4ee6ac93
1 changed files with 4 additions and 0 deletions

View File

@ -561,6 +561,10 @@ protected:
u32 width = Size.Width >> level;
u32 height = Size.Height >> level;
if (width < 1)
width = 1;
if (height < 1)
height = 1;
GLenum tmpTextureType = TextureType;