Codechange: Add a container to index data by zoom level.
This commit is contained in:
+10
-6
@@ -1397,9 +1397,14 @@ void OpenGLBackend::RenderOglSprite(OpenGLSprite *gl_sprite, PaletteID pal, int
|
||||
* Create an OpenGL sprite with a palette remap part.
|
||||
* @param sprite The sprite to create the OpenGL sprite for
|
||||
*/
|
||||
OpenGLSprite::OpenGLSprite(SpriteType sprite_type, const SpriteLoader::SpriteCollection &sprite) :
|
||||
dim(sprite[ZOOM_LVL_MIN].width, sprite[ZOOM_LVL_MIN].height), x_offs(sprite[ZOOM_LVL_MIN].x_offs), y_offs(sprite[ZOOM_LVL_MIN].y_offs)
|
||||
OpenGLSprite::OpenGLSprite(SpriteType sprite_type, const SpriteLoader::SpriteCollection &sprite)
|
||||
{
|
||||
const auto &root_sprite = sprite.Root();
|
||||
this->dim.width = root_sprite.width;
|
||||
this->dim.height = root_sprite.height;
|
||||
this->x_offs = root_sprite.x_offs;
|
||||
this->y_offs = root_sprite.y_offs;
|
||||
|
||||
int levels = sprite_type == SpriteType::Font ? 1 : ZOOM_LVL_END;
|
||||
assert(levels > 0);
|
||||
(void)_glGetError();
|
||||
@@ -1408,7 +1413,6 @@ OpenGLSprite::OpenGLSprite(SpriteType sprite_type, const SpriteLoader::SpriteCol
|
||||
_glActiveTexture(GL_TEXTURE0);
|
||||
_glBindBuffer(GL_PIXEL_UNPACK_BUFFER, 0);
|
||||
|
||||
const auto &root_sprite = sprite[ZOOM_LVL_MIN];
|
||||
for (int t = TEX_RGBA; t < NUM_TEX; t++) {
|
||||
/* Sprite component present? */
|
||||
if (t == TEX_RGBA && root_sprite.colours == SpriteComponent::Palette) continue;
|
||||
@@ -1436,9 +1440,9 @@ OpenGLSprite::OpenGLSprite(SpriteType sprite_type, const SpriteLoader::SpriteCol
|
||||
}
|
||||
|
||||
/* Upload texture data. */
|
||||
for (int i = 0; i < (sprite_type == SpriteType::Font ? 1 : ZOOM_LVL_END); i++) {
|
||||
const auto &src_sprite = sprite[i];
|
||||
this->Update(src_sprite.width, src_sprite.height, i, src_sprite.data);
|
||||
for (ZoomLevel zoom = ZOOM_LVL_MIN; zoom <= (sprite_type == SpriteType::Font ? ZOOM_LVL_MIN : ZOOM_LVL_MAX); ++zoom) {
|
||||
const auto &src_sprite = sprite[zoom];
|
||||
this->Update(src_sprite.width, src_sprite.height, zoom, src_sprite.data);
|
||||
}
|
||||
|
||||
assert(_glGetError() == GL_NO_ERROR);
|
||||
|
||||
Reference in New Issue
Block a user