mirror of
https://github.com/luanti-org/luanti.git
synced 2025-08-16 18:01:40 +00:00
Move generateTextureFromMesh to TextureSource to fix a texture leak
TextureSource has a list of textures to delete (m_texture_trash) so this provides a proper, non-hacky way to delete RTT textures. Also, the prior, hacky way of deleting them seems to be broken (see pull request #803). To avoid header file clutter by repeating the same long list of arguments over and over again, store the arguments of generateTextureFromMesh in a struct called TextureFromMeshParams. Also fix issue #782 (Only use bilinear (and others) on item textures when settings allow it).
This commit is contained in:
parent
b1ef850877
commit
8f1d5d34a6
5 changed files with 202 additions and 230 deletions
23
src/tile.h
23
src/tile.h
|
@ -57,6 +57,25 @@ std::string getImagePath(std::string path);
|
|||
*/
|
||||
std::string getTexturePath(const std::string &filename);
|
||||
|
||||
/*
|
||||
ITextureSource::generateTextureFromMesh parameters
|
||||
*/
|
||||
namespace irr {namespace scene {class IMesh;}}
|
||||
struct TextureFromMeshParams
|
||||
{
|
||||
scene::IMesh *mesh;
|
||||
core::dimension2d<u32> dim;
|
||||
std::string rtt_texture_name;
|
||||
bool delete_texture_on_shutdown;
|
||||
v3f camera_position;
|
||||
v3f camera_lookat;
|
||||
core::CMatrix4<f32> camera_projection_matrix;
|
||||
video::SColorf ambient_light;
|
||||
v3f light_position;
|
||||
video::SColorf light_color;
|
||||
f32 light_radius;
|
||||
};
|
||||
|
||||
/*
|
||||
TextureSource creates and caches textures.
|
||||
*/
|
||||
|
@ -78,6 +97,8 @@ public:
|
|||
virtual IrrlichtDevice* getDevice()
|
||||
{return NULL;}
|
||||
virtual bool isKnownSourceImage(const std::string &name)=0;
|
||||
virtual video::ITexture* generateTextureFromMesh(
|
||||
const TextureFromMeshParams ¶ms)=0;
|
||||
};
|
||||
|
||||
class IWritableTextureSource : public ITextureSource
|
||||
|
@ -100,6 +121,8 @@ public:
|
|||
virtual void processQueue()=0;
|
||||
virtual void insertSourceImage(const std::string &name, video::IImage *img)=0;
|
||||
virtual void rebuildImagesAndTextures()=0;
|
||||
virtual video::ITexture* generateTextureFromMesh(
|
||||
const TextureFromMeshParams ¶ms)=0;
|
||||
};
|
||||
|
||||
IWritableTextureSource* createTextureSource(IrrlichtDevice *device);
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue