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:
@@ -561,6 +561,10 @@ protected:
|
|||||||
|
|
||||||
u32 width = Size.Width >> level;
|
u32 width = Size.Width >> level;
|
||||||
u32 height = Size.Height >> level;
|
u32 height = Size.Height >> level;
|
||||||
|
if (width < 1)
|
||||||
|
width = 1;
|
||||||
|
if (height < 1)
|
||||||
|
height = 1;
|
||||||
|
|
||||||
GLenum tmpTextureType = TextureType;
|
GLenum tmpTextureType = TextureType;
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user