Simulant  21.06-50
A portable game engine for Windows, OSX, Linux, Dreamcast, and PSP
Classes | Public Types | Public Member Functions | Static Public Member Functions | Static Public Attributes | List of all members
smlt::Texture Class Reference
Inheritance diagram for smlt::Texture:
smlt::Asset smlt::Loadable smlt::generic::Identifiable< TextureID > smlt::RefCounted< Texture > smlt::Updateable smlt::RenderTarget smlt::ChainNameable< Texture > smlt::Nameable smlt::TwoPhaseConstructed smlt::Nameable

Classes

struct  BuiltIns
 

Public Types

typedef std::shared_ptr< Textureptr
 
typedef std::vector< uint8_t > Data
 
typedef std::function< void(uint8_t *, uint16_t, uint16_t, TextureFormat)> MutationFunc
 
- Public Types inherited from smlt::generic::Identifiable< TextureID >
typedef TextureID id_type
 
- Public Types inherited from smlt::RefCounted< Texture >
typedef std::shared_ptr< Textureptr
 
typedef std::weak_ptr< Texturewptr
 

Public Member Functions

 Texture (TextureID id, AssetManager *asset_manager, uint16_t width, uint16_t height, TextureFormat format=TEXTURE_FORMAT_RGBA_4UB_8888)
 
TextureFormat format () const
 
void set_format (TextureFormat format)
 
void convert (TextureFormat new_format, const TextureChannelSet &channels=Texture::DEFAULT_SOURCE_CHANNELS)
 
void resize (uint16_t width, uint16_t height, uint32_t data_size)
 
void resize (uint16_t width, uint16_t height)
 
void flip_vertically ()
 
void set_source (const smlt::Path &source)
 
void set_texture_filter (TextureFilter filter)
 
void set_free_data_mode (TextureFreeData mode)
 
void set_texture_wrap (TextureWrap wrap_u, TextureWrap wrap_v, TextureWrap wrap_w)
 
void set_texture_wrap_u (TextureWrap wrap_u)
 
void set_texture_wrap_v (TextureWrap wrap_v)
 
void set_texture_wrap_w (TextureWrap wrap_w)
 
void set_auto_upload (bool v=true)
 
void set_mipmap_generation (MipmapGenerate type)
 
std::vector< uint8_t > data_copy () const
 
const uint8_t * data () const
 
uint32_t data_size () const
 
void set_data (const uint8_t *data, std::size_t size)
 
void set_data (const std::vector< uint8_t > &data)
 
void free ()
 
bool has_data () const
 
void flush ()
 
void mutate_data (MutationFunc func)
 
uint16_t width () const override
 
uint16_t height () const override
 
Vec2 dimensions () const
 
bool is_compressed () const
 
uint8_t channels () const
 
void save_to_file (const Path &filename)
 
Path source () const
 
TextureFilter texture_filter () const
 
TextureWrap wrap_u () const
 
TextureWrap wrap_v () const
 
TextureWrap wrap_w () const
 
MipmapGenerate mipmap_generation () const
 
TextureFreeData free_data_mode () const
 
bool init () override
 
void clean_up () override
 
void update (float dt) override
 
bool has_mipmaps () const
 
bool auto_upload () const
 
void _set_renderer_specific_id (const uint32_t id)
 
uint32_t _renderer_specific_id () const
 
void _set_params_clean ()
 
bool _data_dirty () const
 
void _set_data_clean ()
 
bool _params_dirty () const
 
void _set_has_mipmaps (bool v)
 
- Public Member Functions inherited from smlt::Asset
 Asset (AssetManager *manager)
 
AssetManagerasset_manager ()
 
const AssetManagerasset_manager () const
 
int age () const
 
void set_garbage_collection_method (GarbageCollectMethod method)
 
- Public Member Functions inherited from smlt::Nameable
void set_name (const std::string &name)
 
const std::string & name () const
 
bool has_name () const
 
- Public Member Functions inherited from smlt::generic::Identifiable< TextureID >
 Identifiable (TextureID id)
 
TextureID id () const
 
virtual bool operator== (const Identifiable< TextureID > &rhs) const
 
virtual bool operator< (const Identifiable< TextureID > &rhs) const
 
void _bind_id_pointer (ResourceTypePtr ptr)
 
void _overwrite_id (TextureID new_id)
 
- Public Member Functions inherited from smlt::Updateable
virtual void _update_thunk (float dt)
 
virtual void _late_update_thunk (float dt)
 
virtual void _fixed_update_thunk (float step)
 
- Public Member Functions inherited from smlt::RenderTarget
virtual void set_clear_every_frame (uint32_t clear_flags=BUFFER_CLEAR_ALL, const smlt::Colour &colour=smlt::Colour::BLACK)
 
virtual uint32_t clear_every_frame_flags () const
 
virtual smlt::Colour clear_every_frame_colour () const
 
- Public Member Functions inherited from smlt::ChainNameable< Texture >
Textureset_name_and_get (const std::string &name)
 

Static Public Member Functions

static std::size_t required_data_size (TextureFormat fmt, uint16_t width, uint16_t height)
 
- Static Public Member Functions inherited from smlt::RefCounted< Texture >
static RefCounted< Texture >::ptr create (Args &&... args)
 
static RefCounted< Texture >::ptr create ()
 

Static Public Attributes

static const TextureChannelSet DEFAULT_SOURCE_CHANNELS
 

Additional Inherited Members

- Public Attributes inherited from smlt::Asset
Property< generic::DataCarrier Asset::* > data = {this, &Asset::data_}
 
- Protected Member Functions inherited from smlt::Asset
 Asset (const Asset &rhs)
 
Assetoperator= (const Asset &rhs)
 
- Protected Member Functions inherited from smlt::RefCounted< Texture >
 RefCounted (Args &&...)
 

Member Function Documentation

◆ _data_dirty()

bool smlt::Texture::_data_dirty ( ) const

INTERNAL: returns true if the data needs re-uploading

◆ _params_dirty()

bool smlt::Texture::_params_dirty ( ) const

INTERNAL: returns true if the filters are dirty

◆ _set_data_clean()

void smlt::Texture::_set_data_clean ( )

INTERNAL: clears the dirty data flag

◆ _set_params_clean()

void smlt::Texture::_set_params_clean ( )

INTERNAL: Clears the params dirty flag

◆ _set_renderer_specific_id()

void smlt::Texture::_set_renderer_specific_id ( const uint32_t  id)

This is for storing the GL (or whatever) texture ID

◆ channels()

uint8_t smlt::Texture::channels ( ) const

Returns the number of channels that this texture has

◆ convert()

void smlt::Texture::convert ( TextureFormat  new_format,
const TextureChannelSet &  channels = Texture::DEFAULT_SOURCE_CHANNELS 
)

Convert a texture to a new format and allow manipulating/filling the channels during the conversion

◆ data_copy()

std::vector< uint8_t > smlt::Texture::data_copy ( ) const

Return a copy of the internal data array

◆ data_size()

uint32_t smlt::Texture::data_size ( ) const

Returns the size of the currently allocated data buffer, this will be zero if the data only exists in vram

◆ flip_vertically()

void smlt::Texture::flip_vertically ( )

Flip the data buffer vertically. This will have no effect if the data buffer has been wiped after upload

◆ flush()

void smlt::Texture::flush ( )

Flushes texture data / properties to the renderer immediately. This will free ram if the free data mode is set to TEXTURE_FREE_DATA_AFTER_UPLOAD

◆ free()

void smlt::Texture::free ( )

Clear the data buffer

◆ has_data()

bool smlt::Texture::has_data ( ) const

Returns true if the data array isn't empty

◆ has_mipmaps()

bool smlt::Texture::has_mipmaps ( ) const

Returns true if the format contains mipmap data, or mipmaps have been generated during texture upload

◆ init()

bool smlt::Texture::init ( )
overridevirtual

These are overridden to notify the renderer of texture changes

Reimplemented from smlt::TwoPhaseConstructed.

◆ is_compressed()

bool smlt::Texture::is_compressed ( ) const

Returns true if this Texture uses a compressed format

◆ mutate_data()

void smlt::Texture::mutate_data ( Texture::MutationFunc  func)

Apply a mutation function to the current texture data

◆ required_data_size()

std::size_t smlt::Texture::required_data_size ( TextureFormat  fmt,
uint16_t  width,
uint16_t  height 
)
static

The required size that data() should be to hold a texture in this format with these dimensions. For non-compressed formats this is usually the width * height * stride. For compressed formats this can vary, and will include any space for things like codebooks.

◆ resize() [1/2]

void smlt::Texture::resize ( uint16_t  width,
uint16_t  height 
)

Change the width and height, automatically resizing the data buffer depending on the bytes_per_pixel of the texel_type

◆ resize() [2/2]

void smlt::Texture::resize ( uint16_t  width,
uint16_t  height,
uint32_t  data_size 
)

Change the width and height, but manually set the data buffer size, mainly used for compressed textures

◆ save_to_file()

void smlt::Texture::save_to_file ( const Path filename)

Save a texture to the specified file. Will only work for uncompressed Textures

◆ set_auto_upload()

void smlt::Texture::set_auto_upload ( bool  v = true)

If enabled (default) the texture will be uploaded to the GPU by the renderer. You can disable this if you need just a way to load images from disk for other purposes (e.g. heightmaps)

◆ set_free_data_mode()

void smlt::Texture::set_free_data_mode ( TextureFreeData  mode)

If set to TEXTURE_FREE_DATA_AFTER_UPLOAD then the data attribute will be wiped after the renderer has uploaded to the GPU.

◆ set_texture_filter()

void smlt::Texture::set_texture_filter ( TextureFilter  filter)

Texture filtering and wrapping

◆ set_texture_wrap()

void smlt::Texture::set_texture_wrap ( TextureWrap  wrap_u,
TextureWrap  wrap_v,
TextureWrap  wrap_w 
)

Set the texture wrap modes, either together or per-dimension

Member Data Documentation

◆ DEFAULT_SOURCE_CHANNELS

const TextureChannelSet smlt::Texture::DEFAULT_SOURCE_CHANNELS
static
Initial value:
= {{
TEXTURE_CHANNEL_RED,
TEXTURE_CHANNEL_GREEN,
TEXTURE_CHANNEL_BLUE,
TEXTURE_CHANNEL_ALPHA
}}

The documentation for this class was generated from the following files: