mirror of
https://github.com/edubart/otclient.git
synced 2025-10-16 12:34:55 +02:00
Rework minimap rendering
This commit is contained in:
@@ -37,9 +37,11 @@ public:
|
||||
void overwriteMask(const Color& maskedColor, const Color& insideColor = Color::white, const Color& outsideColor = Color::alpha);
|
||||
void blit(const Point& dest, const ImagePtr& other);
|
||||
void paste(const ImagePtr& other);
|
||||
void resize(const Size& size) { m_size = size; m_pixels.resize(size.area() * m_bpp, 0); }
|
||||
bool nextMipmap();
|
||||
|
||||
void setPixel(int x, int y, uint8 *pixel) { memcpy(&m_pixels[(y * m_size.width() + x) * m_bpp], pixel, m_bpp);}
|
||||
void setPixel(int x, int y, const Color& color) { uint32 tmp = color.rgba(); setPixel(x,y,(uint8*)&tmp); }
|
||||
|
||||
std::vector<uint8>& getPixels() { return m_pixels; }
|
||||
uint8* getPixelData() { return &m_pixels[0]; }
|
||||
|
@@ -55,6 +55,21 @@ Texture::Texture(const ImagePtr& image, bool buildMipmaps, bool compress)
|
||||
|
||||
createTexture();
|
||||
|
||||
uploadPixels(image, buildMipmaps, compress);
|
||||
}
|
||||
|
||||
Texture::~Texture()
|
||||
{
|
||||
#ifndef NDEBUG
|
||||
assert(!g_app.isTerminated());
|
||||
#endif
|
||||
// free texture from gl memory
|
||||
if(g_graphics.ok() && m_id != 0)
|
||||
glDeleteTextures(1, &m_id);
|
||||
}
|
||||
|
||||
void Texture::uploadPixels(const ImagePtr& image, bool buildMipmaps, bool compress)
|
||||
{
|
||||
ImagePtr glImage = image;
|
||||
if(m_size != m_glSize) {
|
||||
glImage = ImagePtr(new Image(m_glSize, image->getBpp()));
|
||||
@@ -77,16 +92,6 @@ Texture::Texture(const ImagePtr& image, bool buildMipmaps, bool compress)
|
||||
setupFilters();
|
||||
}
|
||||
|
||||
Texture::~Texture()
|
||||
{
|
||||
#ifndef NDEBUG
|
||||
assert(!g_app.isTerminated());
|
||||
#endif
|
||||
// free texture from gl memory
|
||||
if(g_graphics.ok() && m_id != 0)
|
||||
glDeleteTextures(1, &m_id);
|
||||
}
|
||||
|
||||
void Texture::bind()
|
||||
{
|
||||
// must reset painter texture state
|
||||
|
@@ -33,6 +33,7 @@ public:
|
||||
Texture(const ImagePtr& image, bool buildMipmaps = false, bool compress = false);
|
||||
virtual ~Texture();
|
||||
|
||||
void uploadPixels(const ImagePtr& image, bool buildMipmaps = false, bool compress = false);
|
||||
void bind();
|
||||
void copyFromScreen(const Rect& screenRect);
|
||||
virtual bool buildHardwareMipmaps();
|
||||
|
@@ -95,7 +95,7 @@ public:
|
||||
}
|
||||
}
|
||||
}
|
||||
void scale(int w, int h, Fw::AspectRatioMode mode) { scale(TSize<T>(w, h)); }
|
||||
void scale(int w, int h, Fw::AspectRatioMode mode) { scale(TSize<T>(w, h), mode); }
|
||||
|
||||
float ratio() const { return (float)wd/ht; }
|
||||
T area() const { return wd*ht; }
|
||||
|
Reference in New Issue
Block a user