Panda3D
Loading...
Searching...
No Matches
Public Types | Public Member Functions | Static Public Member Functions | Public Attributes | Friends | List of all members
Texture Class Reference

Represents a texture object, which is typically a single 2-d image but may also represent a 1-d or 3-d texture image, or the six 2-d faces of a cube map texture. More...

#include "texture.h"

Inheritance diagram for Texture:
TypedWritableReferenceCount Namable TypedWritable ReferenceCount MemoryBase TypedObject MemoryBase MemoryBase VideoTexture

Public Types

enum  ComponentType {
  T_unsigned_byte , T_unsigned_short , T_float , T_unsigned_int_24_8 ,
  T_int , T_byte , T_short , T_half_float ,
  T_unsigned_int
}
 
enum  CompressionMode {
  CM_default , CM_off , CM_on , CM_fxt1 ,
  CM_dxt1 , CM_dxt2 , CM_dxt3 , CM_dxt4 ,
  CM_dxt5 , CM_pvr1_2bpp , CM_pvr1_4bpp , CM_rgtc ,
  CM_etc1 , CM_etc2 , CM_eac
}
 
enum  DeprecatedFilterType {
  FT_nearest = SamplerState::FT_nearest , FT_linear = SamplerState::FT_linear , FT_nearest_mipmap_nearest = SamplerState::FT_nearest_mipmap_nearest , FT_linear_mipmap_nearest = SamplerState::FT_linear_mipmap_nearest ,
  FT_nearest_mipmap_linear = SamplerState::FT_nearest_mipmap_linear , FT_linear_mipmap_linear = SamplerState::FT_linear_mipmap_linear , FT_shadow = SamplerState::FT_shadow , FT_default = SamplerState::FT_default ,
  FT_invalid = SamplerState::FT_invalid
}
 
enum  DeprecatedWrapMode {
  WM_clamp = SamplerState::WM_clamp , WM_repeat = SamplerState::WM_repeat , WM_mirror = SamplerState::WM_mirror , WM_mirror_once = SamplerState::WM_mirror_once ,
  WM_border_color = SamplerState::WM_border_color , WM_invalid = SamplerState::WM_invalid
}
 
typedef SamplerState::FilterType FilterType
 
enum  Format {
  F_depth_stencil = 1 , F_color_index , F_red , F_green ,
  F_blue , F_alpha , F_rgb , F_rgb5 ,
  F_rgb8 , F_rgb12 , F_rgb332 , F_rgba ,
  F_rgbm , F_rgba4 , F_rgba5 , F_rgba8 ,
  F_rgba12 , F_luminance , F_luminance_alpha , F_luminance_alphamask ,
  F_rgba16 , F_rgba32 , F_depth_component , F_depth_component16 ,
  F_depth_component24 , F_depth_component32 , F_r16 , F_rg16 ,
  F_rgb16 , F_srgb , F_srgb_alpha , F_sluminance ,
  F_sluminance_alpha , F_r32i , F_r32 , F_rg32 ,
  F_rgb32 , F_r8i , F_rg8i , F_rgb8i ,
  F_rgba8i , F_r11_g11_b10 , F_rgb9_e5 , F_rgb10_a2 ,
  F_rg , F_r16i , F_rg16i , F_rgb16i ,
  F_rgba16i , F_rg32i , F_rgb32i , F_rgba32i
}
 
enum  QualityLevel { QL_default , QL_fastest , QL_normal , QL_best }
 
enum  TextureType {
  TT_1d_texture , TT_2d_texture , TT_3d_texture , TT_2d_texture_array ,
  TT_cube_map , TT_buffer_texture , TT_cube_map_array , TT_1d_texture_array
}
 
typedef SamplerState::WrapMode WrapMode
 

Public Member Functions

 Texture (const std::string &name=std::string())
 Constructs an empty texture.
 
bool adjust_this_size (int &x_size, int &y_size, const std::string &name, bool for_padding) const
 Works like adjust_size, but also considers the texture class.
 
void clear ()
 
void clear_alpha_filename ()
 
void clear_alpha_fullpath ()
 
void clear_aux_data (const std::string &key)
 
void clear_clear_color ()
 
void clear_filename ()
 
void clear_fullpath ()
 
void clear_image ()
 Clears the texture data without changing its format or resolution.
 
void clear_ram_image ()
 Discards the current system-RAM image.
 
void clear_ram_mipmap_image (int n)
 Discards the current system-RAM image for the nth mipmap level.
 
void clear_ram_mipmap_images ()
 Discards the current system-RAM image for all mipmap levels, except level 0 (the base image).
 
void clear_simple_ram_image ()
 Discards the current "simple" image.
 
bool compress_ram_image (CompressionMode compression=CM_on, QualityLevel quality_level=QL_default, GraphicsStateGuardianBase *gsg=nullptr)
 Attempts to compress the texture's RAM image internally, to a format supported by the indicated GSG.
 
void consider_rescale (PNMImage &pnmimage)
 Asks the PNMImage to change its scale when it reads the image, according to the whims of the Config.prc file.
 
virtual bool cull_callback (CullTraverser *trav, const CullTraverserData &data) const
 If has_cull_callback() returns true, this function will be called during the cull traversal to perform any additional operations that should be performed at cull time.
 
virtual void ensure_loader_type (const Filename &filename)
 May be called prior to calling read_txo() or any bam-related Texture- creating callback, to ensure that the proper dynamic libraries for a Texture of the current class type, and the indicated filename, have been already loaded.
 
size_t estimate_texture_memory () const
 Estimates the amount of texture memory that will be consumed by loading this texture.
 
virtual void finalize (BamReader *manager)
 Called by the BamReader to perform any final actions needed for setting up the object after all objects have been read and all pointers have been completed.
 
virtual TypeHandle force_init_type ()
 
void generate_alpha_scale_map ()
 Generates a special 256x1 1-d texture that can be used to apply an arbitrary alpha scale to objects by judicious use of texture matrix.
 
void generate_normalization_cube_map (int size)
 Generates a special cube map image in the texture that can be used to apply bump mapping effects: for each texel in the cube map that is indexed by the 3-d texture coordinates (x, y, z), the resulting value is the normalized vector (x, y, z) (compressed from -1..1 into 0..1).
 
void generate_ram_mipmap_images ()
 Automatically fills in the n mipmap levels of the Texture, based on the texture's source image.
 
void generate_simple_ram_image ()
 Computes the "simple" ram image by loading the main RAM image, if it is not already available, and reducing it to 16x16 or smaller.
 
bool get_active (PreparedGraphicsObjects *prepared_objects) const
 Returns true if this Texture was rendered in the most recent frame within the indicated GSG.
 
const Filenameget_alpha_filename () const
 
const Filenameget_alpha_fullpath () const
 
int get_anisotropic_degree () const
 
AutoTextureScale get_auto_texture_scale () const
 
TypedReferenceCountget_aux_data (const std::string &key) const
 
LColor get_border_color () const
 
LColor get_clear_color () const
 
vector_uchar get_clear_data () const
 Returns the raw image data for a single pixel if it were set to the clear color.
 
ComponentType get_component_type () const
 
int get_component_width () const
 
CompressionMode get_compression () const
 
size_t get_data_size_bytes (PreparedGraphicsObjects *prepared_objects) const
 Returns the number of bytes which the texture is reported to consume within graphics memory, for the indicated GSG.
 
const SamplerStateget_default_sampler () const
 
int get_effective_anisotropic_degree () const
 
SamplerState::FilterType get_effective_magfilter () const
 
SamplerState::FilterType get_effective_minfilter () const
 
QualityLevel get_effective_quality_level () const
 
int get_expected_mipmap_num_pages (int n) const
 Returns the total number of pages that the nth mipmap level should have, based on the texture's size.
 
int get_expected_mipmap_x_size (int n) const
 Returns the x_size that the nth mipmap level should have, based on the texture's size.
 
int get_expected_mipmap_y_size (int n) const
 Returns the y_size that the nth mipmap level should have, based on the texture's size.
 
int get_expected_mipmap_z_size (int n) const
 Returns the z_size that the nth mipmap level should have, based on the texture's size.
 
int get_expected_num_mipmap_levels () const
 
size_t get_expected_ram_image_size () const
 
size_t get_expected_ram_mipmap_image_size (int n) const
 Returns the number of bytes that *ought* to be used by the in-memory image for mipmap level n, based on the texture parameters.
 
size_t get_expected_ram_mipmap_page_size (int n) const
 Returns the number of bytes that should be used per each Z page of the 3-d texture, for mipmap level n.
 
size_t get_expected_ram_mipmap_view_size (int n) const
 Returns the number of bytes that *ought* to be used by each view of the in- memory image for mipmap level n, based on the texture parameters.
 
size_t get_expected_ram_page_size () const
 
const Filenameget_filename () const
 
Format get_format () const
 
const Filenameget_fullpath () const
 
UpdateSeq get_image_modified () const
 
virtual bool get_keep_ram_image () const
 
bool get_loaded_from_image () const
 
bool get_loaded_from_txo () const
 
SamplerState::FilterType get_magfilter () const
 
bool get_match_framebuffer_format () const
 
SamplerState::FilterType get_minfilter () const
 
int get_num_components () const
 
int get_num_loadable_ram_mipmap_images () const
 
int get_num_pages () const
 
int get_num_ram_mipmap_images () const
 
int get_num_views () const
 
int get_orig_file_x_size () const
 
int get_orig_file_y_size () const
 
int get_orig_file_z_size () const
 
int get_pad_x_size () const
 Returns size of the pad region.
 
int get_pad_y_size () const
 Returns size of the pad region.
 
int get_pad_z_size () const
 Returns size of the pad region.
 
bool get_post_load_store_cache () const
 
UpdateSeq get_properties_modified () const
 
QualityLevel get_quality_level () const
 
CPTA_uchar get_ram_image ()
 Returns the system-RAM image data associated with the texture.
 
CPTA_uchar get_ram_image_as (const std::string &requested_format)
 Returns the uncompressed system-RAM image data associated with the texture.
 
CompressionMode get_ram_image_compression () const
 
size_t get_ram_image_size () const
 
CPTA_uchar get_ram_mipmap_image (int n) const
 Returns the system-RAM image data associated with the nth mipmap level, if present.
 
size_t get_ram_mipmap_image_size (int n) const
 Returns the number of bytes used by the in-memory image for mipmap level n, or 0 if there is no in-memory image for this mipmap level.
 
size_t get_ram_mipmap_page_size (int n) const
 Returns the number of bytes used by the in-memory image per page for mipmap level n, or 0 if there is no in-memory image for this mipmap level.
 
void * get_ram_mipmap_pointer (int n) const
 Similiar to get_ram_mipmap_image(), however, in this case the void pointer for the given ram image is returned.
 
size_t get_ram_mipmap_view_size (int n) const
 Returns the number of bytes used by the in-memory image per view for mipmap level n, or 0 if there is no in-memory image for this mipmap level.
 
size_t get_ram_page_size () const
 
size_t get_ram_view_size () const
 
bool get_render_to_texture () const
 
bool get_resident (PreparedGraphicsObjects *prepared_objects) const
 Returns true if this Texture is reported to be resident within graphics memory for the indicated GSG.
 
UpdateSeq get_simple_image_modified () const
 
CPTA_uchar get_simple_ram_image () const
 
size_t get_simple_ram_image_size () const
 Returns the number of bytes used by the "simple" image, or 0 if there is no simple image.
 
int get_simple_x_size () const
 
int get_simple_y_size () const
 
LVecBase2 get_tex_scale () const
 Returns a scale pair that is suitable for applying to geometry via NodePath::set_tex_scale(), which will convert texture coordinates on the geometry from the range 0..1 into the appropriate range to render the video part of the texture.
 
TextureType get_texture_type () const
 
virtual TypeHandle get_type () const
 
CPTA_uchar get_uncompressed_ram_image ()
 Returns the system-RAM image associated with the texture, in an uncompressed form if at all possible.
 
GeomEnums::UsageHint get_usage_hint () const
 
SamplerState::WrapMode get_wrap_u () const
 
SamplerState::WrapMode get_wrap_v () const
 
SamplerState::WrapMode get_wrap_w () const
 
int get_x_size () const
 
int get_y_size () const
 
int get_z_size () const
 
bool has_all_ram_mipmap_images () const
 Returns true if all expected mipmap levels have been defined and exist in the system RAM, or false if even one mipmap level is missing.
 
bool has_alpha_filename () const
 
bool has_alpha_fullpath () const
 
bool has_auto_texture_scale () const
 Returns true if set_auto_texture_scale() has been set to something other than ATS_unspecified for this particular texture.
 
bool has_clear_color () const
 
bool has_compression () const
 Returns true if the texture indicates it wants to be compressed, either with CM_on or higher, or CM_default and compressed-textures is true.
 
virtual bool has_cull_callback () const
 Should be overridden by derived classes to return true if cull_callback() has been defined.
 
bool has_filename () const
 
bool has_fullpath () const
 
bool has_ram_image () const
 Returns true if the Texture has its image contents available in main RAM, false if it exists only in texture memory or in the prepared GSG context.
 
bool has_ram_mipmap_image (int n) const
 Returns true if the Texture has the nth mipmap level available in system memory, false otherwise.
 
bool has_simple_ram_image () const
 
bool has_uncompressed_ram_image () const
 Returns true if the Texture has its image contents available in main RAM and is uncompressed, false otherwise.
 
virtual bool is_cacheable () const
 
bool is_prepared (PreparedGraphicsObjects *prepared_objects) const
 Returns true if the texture has already been prepared or enqueued for preparation on the indicated GSG, false otherwise.
 
bool load (const PfmFile &pfm, const LoaderOptions &options=LoaderOptions())
 Replaces the texture with the indicated image.
 
bool load (const PfmFile &pfm, int z, int n, const LoaderOptions &options=LoaderOptions())
 Stores the indicated image in the given page and mipmap level.
 
bool load (const PNMImage &pnmimage, const LoaderOptions &options=LoaderOptions())
 Replaces the texture with the indicated image.
 
bool load (const PNMImage &pnmimage, int z, int n, const LoaderOptions &options=LoaderOptions())
 Stores the indicated image in the given page and mipmap level.
 
Textureload_related (const InternalName *suffix) const
 Loads a texture whose filename is derived by concatenating a suffix to the filename of this texture.
 
bool load_sub_image (const PNMImage &pnmimage, int x, int y, int z=0, int n=0)
 Stores the indicated image in a region of the texture.
 
PTA_uchar make_ram_image ()
 Discards the current system-RAM image for the texture, if any, and allocates a new buffer of the appropriate size.
 
PTA_uchar make_ram_mipmap_image (int n)
 Discards the current system-RAM image for the nth mipmap level, if any, and allocates a new buffer of the appropriate size.
 
bool might_have_ram_image () const
 Returns true if the texture's image contents are currently available in main RAM, or there is reason to believe it can be loaded on demand.
 
PTA_uchar modify_ram_image ()
 Returns a modifiable pointer to the system-RAM image.
 
PTA_uchar modify_ram_mipmap_image (int n)
 Returns a modifiable pointer to the system-RAM image for the nth mipmap level.
 
PTA_uchar modify_simple_ram_image ()
 Returns a modifiable pointer to the internal "simple" texture image.
 
PTA_uchar new_simple_ram_image (int x_size, int y_size)
 Creates an empty array for the simple ram image of the indicated size, and returns a modifiable pointer to the new array.
 
TextureContextprepare_now (int view, PreparedGraphicsObjects *prepared_objects, GraphicsStateGuardianBase *gsg)
 Creates a context for the texture on the particular GSG, if it does not already exist.
 
 PT (AsyncFuture) prepare(PreparedGraphicsObjects *prepared_objects)
 
 PT (Texture) make_copy() const
 
typedef PT (Texture) MakeTextureFunc()
 
 PT (TexturePeeker) peek()
 
bool read (const Filename &fullpath, const Filename &alpha_fullpath, int primary_file_num_channels, int alpha_file_channel, const LoaderOptions &options=LoaderOptions())
 Combine a 3-component image with a grayscale image to get a 4-component image.
 
bool read (const Filename &fullpath, const Filename &alpha_fullpath, int primary_file_num_channels, int alpha_file_channel, int z, int n, bool read_pages, bool read_mipmaps, BamCacheRecord *record=nullptr, const LoaderOptions &options=LoaderOptions())
 Reads the texture from the indicated filename.
 
bool read (const Filename &fullpath, const LoaderOptions &options=LoaderOptions())
 Reads the named filename into the texture.
 
bool read (const Filename &fullpath, int z, int n, bool read_pages, bool read_mipmaps, const LoaderOptions &options=LoaderOptions())
 Reads a single file into a single page or mipmap level, or automatically reads a series of files into a series of pages and/or mipmap levels.
 
bool read_dds (std::istream &in, const std::string &filename="", bool header_only=false)
 Reads the texture from a DDS file object.
 
bool read_ktx (std::istream &in, const std::string &filename="", bool header_only=false)
 Reads the texture from a KTX file object.
 
bool read_txo (std::istream &in, const std::string &filename="")
 Reads the texture from a Panda texture object.
 
bool release (PreparedGraphicsObjects *prepared_objects)
 Frees the texture context only on the indicated object, if it exists there.
 
int release_all ()
 Frees the context allocated on all objects for which the texture has been declared.
 
bool reload ()
 Re-reads the Texture from its disk file.
 
bool rescale_texture ()
 This method is similar to consider_rescale(), but instead of scaling a separate PNMImage, it will ask the Texture to rescale its own internal image to a power of 2, according to the config file requirements.
 
void set_alpha_filename (const Filename &alpha_filename)
 
void set_alpha_fullpath (const Filename &alpha_fullpath)
 
void set_anisotropic_degree (int anisotropic_degree)
 
void set_auto_texture_scale (AutoTextureScale scale)
 
void set_aux_data (const std::string &key, TypedReferenceCount *aux_data)
 
void set_border_color (const LColor &color)
 
void set_clear_color (const LColor &color)
 
void set_component_type (ComponentType component_type)
 
void set_compression (CompressionMode compression)
 
void set_default_sampler (const SamplerState &sampler)
 
void set_filename (const Filename &filename)
 
void set_format (Format format)
 
void set_fullpath (const Filename &fullpath)
 
void set_keep_ram_image (bool keep_ram_image)
 
void set_loaded_from_image (bool flag=true)
 
void set_loaded_from_txo (bool flag=true)
 
void set_magfilter (FilterType filter)
 
void set_match_framebuffer_format (bool flag)
 
void set_minfilter (FilterType filter)
 
void set_num_views (int num_views)
 
void set_orig_file_size (int x, int y, int z=1)
 Specifies the size of the texture as it exists in its original disk file, before any Panda scaling.
 
void set_pad_size (int x=0, int y=0, int z=0)
 Sets the size of the pad region.
 
void set_post_load_store_cache (bool flag)
 
void set_quality_level (QualityLevel quality_level)
 
void set_ram_image (CPTA_uchar image, CompressionMode compression=CM_off, size_t page_size=0)
 Replaces the current system-RAM image with the new data.
 
void set_ram_image_as (CPTA_uchar image, const std::string &provided_format)
 Replaces the current system-RAM image with the new data, converting it first if necessary from the indicated component-order format.
 
void set_ram_mipmap_image (int n, CPTA_uchar image, size_t page_size=0)
 Replaces the current system-RAM image for the indicated mipmap level with the new data.
 
void set_ram_mipmap_pointer (int n, void *image, size_t page_size=0)
 Sets an explicit void pointer as the texture's mipmap image for the indicated level.
 
void set_ram_mipmap_pointer_from_int (long long pointer, int n, int page_size)
 Accepts a raw pointer cast as an int, which is then passed to set_ram_mipmap_pointer(); see the documentation for that method.
 
void set_render_to_texture (bool render_to_texture)
 
void set_simple_ram_image (CPTA_uchar image, int x_size, int y_size)
 Replaces the internal "simple" texture image.
 
void set_size_padded (int x=1, int y=1, int z=1)
 Changes the size of the texture, padding if necessary, and setting the pad region as well.
 
void set_wrap_u (WrapMode wrap)
 
void set_wrap_v (WrapMode wrap)
 
void set_wrap_w (WrapMode wrap)
 
void set_x_size (int x_size)
 
void set_y_size (int y_size)
 
void set_z_size (int z_size)
 
void setup_1d_texture ()
 Sets the texture as an empty 1-d texture with no dimensions.
 
void setup_1d_texture (int x_size, ComponentType component_type, Format format)
 Sets the texture as an empty 1-d texture with the specified dimensions and properties.
 
void setup_2d_texture ()
 Sets the texture as an empty 2-d texture with no dimensions.
 
void setup_2d_texture (int x_size, int y_size, ComponentType component_type, Format format)
 Sets the texture as an empty 2-d texture with the specified dimensions and properties.
 
void setup_2d_texture_array (int x_size, int y_size, int z_size, ComponentType component_type, Format format)
 Sets the texture as an empty 2-d texture array with the specified dimensions and properties.
 
void setup_2d_texture_array (int z_size=1)
 Sets the texture as an empty 2-d texture array with no dimensions (though if you know the depth ahead of time, it saves a bit of reallocation later).
 
void setup_3d_texture (int x_size, int y_size, int z_size, ComponentType component_type, Format format)
 Sets the texture as an empty 3-d texture with the specified dimensions and properties.
 
void setup_3d_texture (int z_size=1)
 Sets the texture as an empty 3-d texture with no dimensions (though if you know the depth ahead of time, it saves a bit of reallocation later).
 
void setup_buffer_texture (int size, ComponentType component_type, Format format, GeomEnums::UsageHint usage)
 Sets the texture as an empty buffer texture with the specified size and properties.
 
void setup_cube_map ()
 Sets the texture as an empty cube map texture with no dimensions.
 
void setup_cube_map (int size, ComponentType component_type, Format format)
 Sets the texture as an empty cube map texture with the specified dimensions and properties.
 
void setup_cube_map_array (int num_cube_maps)
 Sets the texture as cube map array with N cube maps.
 
void setup_cube_map_array (int size, int num_cube_maps, ComponentType component_type, Format format)
 Sets the texture as cube map array with N cube maps with the specified dimensions and format.
 
void setup_texture (TextureType texture_type, int x_size, int y_size, int z_size, ComponentType component_type, Format format)
 Sets the texture to the indicated type and dimensions, presumably in preparation for calling read() or load(), or set_ram_image() or modify_ram_image(), or use set_clear_color to let the texture be cleared to a solid color.
 
bool store (PfmFile &pfm) const
 Saves the texture to the indicated PfmFile, but does not write it to disk.
 
bool store (PfmFile &pfm, int z, int n) const
 Saves the indicated page and mipmap level of the texture to the PfmFile.
 
bool store (PNMImage &pnmimage) const
 Saves the texture to the indicated PNMImage, but does not write it to disk.
 
bool store (PNMImage &pnmimage, int z, int n) const
 Saves the indicated page and mipmap level of the texture to the PNMImage.
 
void texture_uploaded ()
 This method is called by the GraphicsEngine at the beginning of the frame *after* a texture has been successfully uploaded to graphics memory.
 
bool uncompress_ram_image ()
 Attempts to uncompress the texture's RAM image internally.
 
bool uses_mipmaps () const
 Returns true if the minfilter settings on this texture indicate the use of mipmapping, false otherwise.
 
bool was_image_modified (PreparedGraphicsObjects *prepared_objects) const
 Returns true if the texture needs to be re-loaded onto the indicated GSG, either because its image data is out-of-date, or because it's not fully prepared now.
 
bool write (const Filename &fullpath)
 Writes the texture to the named filename.
 
bool write (const Filename &fullpath, int z, int n, bool write_pages, bool write_mipmaps)
 Writes a single page or mipmap level to a single file, or automatically writes a series of pages and/or mipmap levels to a numbered series of files.
 
void write (std::ostream &out, int indent_level) const
 Not to be confused with write(Filename), this method simply describes the texture properties.
 
virtual void write_datagram (BamWriter *manager, Datagram &me)
 Function to write the important information in the particular object to a Datagram.
 
- Public Member Functions inherited from TypedWritableReferenceCount
 TypedWritableReferenceCount (const TypedWritableReferenceCount &copy)
 
virtual ReferenceCountas_reference_count ()
 Returns the pointer cast to a ReferenceCount pointer, if it is in fact of that type.
 
void operator= (const TypedWritableReferenceCount &copy)
 
- Public Member Functions inherited from TypedWritable
 TypedWritable (const TypedWritable &copy)
 
virtual int complete_pointers (TypedWritable **p_list, BamReader *manager)
 Receives an array of pointers, one for each time manager->read_pointer() was called in fillin().
 
vector_uchar encode_to_bam_stream () const
 Converts the TypedWritable object into a single stream of data using a BamWriter, and returns that data as a bytes object.
 
bool encode_to_bam_stream (vector_uchar &data, BamWriter *writer=nullptr) const
 Converts the TypedWritable object into a single stream of data using a BamWriter, and stores that data in the indicated string.
 
virtual void fillin (DatagramIterator &scan, BamReader *manager)
 This internal function is intended to be called by each class's make_from_bam() method to read in all of the relevant data from the BamFile for the new object.
 
UpdateSeq get_bam_modified () const
 Returns the current bam_modified counter.
 
void mark_bam_modified ()
 Increments the bam_modified counter, so that this object will be invalidated and retransmitted on any open bam streams.
 
void operator= (const TypedWritable &copy)
 
virtual bool require_fully_complete () const
 Some objects require all of their nested pointers to have been completed before the objects themselves can be completed.
 
virtual void update_bam_nested (BamWriter *manager)
 Called by the BamWriter when this object has not itself been modified recently, but it should check its nested objects for updates.
 
- Public Member Functions inherited from TypedObject
 TypedObject (const TypedObject &copy)=default
 
TypedObjectas_typed_object ()
 Returns the object, upcast (if necessary) to a TypedObject pointer.
 
const TypedObjectas_typed_object () const
 Returns the object, upcast (if necessary) to a TypedObject pointer.
 
int get_best_parent_from_Set (const std::set< int > &) const
 
int get_type_index () const
 Returns the internal index number associated with this object's TypeHandle, a unique number for each different type.
 
bool is_exact_type (TypeHandle handle) const
 Returns true if the current object is the indicated type exactly.
 
bool is_of_type (TypeHandle handle) const
 Returns true if the current object is or derives from the indicated type.
 
TypedObjectoperator= (const TypedObject &copy)=default
 
- Public Member Functions inherited from MemoryBase
void operator delete (void *, void *)
 
void operator delete (void *ptr)
 
void operator delete[] (void *, void *)
 
void operator delete[] (void *ptr)
 
void * operator new (size_t size)
 
void * operator new (size_t size, void *ptr)
 
void * operator new[] (size_t size)
 
void * operator new[] (size_t size, void *ptr)
 
- Public Member Functions inherited from ReferenceCount
int get_ref_count () const
 
WeakReferenceListget_weak_list () const
 Returns the WeakReferenceList associated with this ReferenceCount object.
 
bool has_weak_list () const
 Returns true if this particular ReferenceCount object has a WeakReferenceList created, false otherwise.
 
void local_object ()
 This function should be called, once, immediately after creating a new instance of some ReferenceCount-derived object on the stack.
 
void ref () const
 Explicitly increments the reference count.
 
bool ref_if_nonzero () const
 Atomically increases the reference count of this object if it is not zero.
 
bool test_ref_count_integrity () const
 Does some easy checks to make sure that the reference count isn't completely bogus.
 
bool test_ref_count_nonzero () const
 Does some easy checks to make sure that the reference count isn't zero, or completely bogus.
 
virtual bool unref () const
 Explicitly decrements the reference count.
 
bool unref_if_one () const
 Atomically decreases the reference count of this object if it is one.
 
WeakReferenceListweak_ref ()
 Adds the indicated PointerToVoid as a weak reference to this object.
 
void weak_unref ()
 Removes the indicated PointerToVoid as a weak reference to this object.
 
- Public Member Functions inherited from Namable
 Namable (const std::string &initial_name="")
 
void clear_name ()
 Resets the Namable's name to empty.
 
const std::string & get_name () const
 
bool has_name () const
 Returns true if the Namable has a nonempty name set, false if the name is empty.
 
void output (std::ostream &out) const
 Outputs the Namable.
 
void set_name (const std::string &name)
 

Static Public Member Functions

static bool adjust_size (int &x_size, int &y_size, const std::string &name, bool for_padding, AutoTextureScale auto_texture_scale=ATS_unspecified)
 Computes the proper size of the texture, based on the original size, the filename, and the resizing whims of the config file.
 
static void consider_rescale (PNMImage &pnmimage, const std::string &name, AutoTextureScale auto_texture_scale=ATS_unspecified)
 Asks the PNMImage to change its scale when it reads the image, according to the whims of the Config.prc file.
 
static int down_to_power_2 (int value)
 Returns the largest power of 2 less than or equal to value.
 
static std::string format_component_type (ComponentType ct)
 Returns the indicated ComponentType converted to a string word.
 
static std::string format_compression_mode (CompressionMode cm)
 Returns the indicated CompressionMode converted to a string word.
 
static std::string format_format (Format f)
 Returns the indicated Format converted to a string word.
 
static std::string format_quality_level (QualityLevel tql)
 Returns the indicated QualityLevel converted to a string word.
 
static std::string format_texture_type (TextureType tt)
 Returns the indicated TextureType converted to a string word.
 
static TypeHandle get_class_type ()
 
static AutoTextureScale get_textures_power_2 ()
 This flag returns ATS_none, ATS_up, or ATS_down and controls the scaling of textures in general.
 
static bool has_alpha (Format format)
 Returns true if the indicated format includes alpha, false otherwise.
 
static bool has_binary_alpha (Format format)
 Returns true if the indicated format includes a binary alpha only, false otherwise.
 
static bool has_textures_power_2 ()
 If true, then get_textures_power_2 has been set using set_textures_power_2.
 
static void init_type ()
 
static bool is_integer (Format format)
 Returns true if the indicated format is an integer format, false otherwise.
 
static bool is_specific (CompressionMode compression)
 Returns true if the indicated compression mode is one of the specific compression types, false otherwise.
 
static bool is_srgb (Format format)
 Returns true if the indicated format is in the sRGB color space, false otherwise.
 
static bool is_unsigned (ComponentType ctype)
 Returns true if the indicated component type is unsigned, false otherwise.
 
static PT (Texture) make_texture()
 
static void register_with_read_factory ()
 Factory method to generate a Texture object.
 
static void set_textures_power_2 (AutoTextureScale scale)
 Set this flag to ATS_none, ATS_up, ATS_down, or ATS_pad to control the scaling of textures in general, if a particular texture does not override this.
 
static ComponentType string_component_type (const std::string &str)
 Returns the ComponentType corresponding to the indicated string word.
 
static CompressionMode string_compression_mode (const std::string &str)
 Returns the CompressionMode value associated with the given string representation.
 
static Format string_format (const std::string &str)
 Returns the Format corresponding to the indicated string word.
 
static QualityLevel string_quality_level (const std::string &str)
 Returns the QualityLevel value associated with the given string representation.
 
static TextureType string_texture_type (const std::string &str)
 Returns the TextureType corresponding to the indicated string word.
 
static int up_to_power_2 (int value)
 Returns the smallest power of 2 greater than or equal to value.
 
static PT(Texture) make_from_txo(std bool write_txo (std::ostream &out, const std::string &filename="") const
 Writes the texture to a Panda texture object.
 
- Static Public Member Functions inherited from TypedWritableReferenceCount
static TypeHandle get_class_type ()
 
static void init_type ()
 
static PT (TypedWritableReferenceCount) decode_from_bam_stream(vector_uchar data
 
- Static Public Member Functions inherited from TypedWritable
static bool decode_raw_from_bam_stream (TypedWritable *&ptr, ReferenceCount *&ref_ptr, vector_uchar data, BamReader *reader=nullptr)
 Reads the bytes created by a previous call to encode_to_bam_stream(), and extracts the single object on those bytes.
 
static TypeHandle get_class_type ()
 
static void init_type ()
 
- Static Public Member Functions inherited from TypedObject
static TypeHandle get_class_type ()
 
static void init_type ()
 This function is declared non-inline to work around a compiler bug in g++ 2.96.
 
- Static Public Member Functions inherited from ReferenceCount
static TypeHandle get_class_type ()
 
static void init_type ()
 
- Static Public Member Functions inherited from Namable
static TypeHandle get_class_type ()
 
static void init_type ()
 

Public Attributes

 clear_alpha_filename
 Removes the alpha filename, if it was previously set.
 
 clear_alpha_fullpath
 Removes the alpha fullpath, if it was previously set.
 
 clear_aux_data
 Removes a record previously recorded via set_aux_data().
 
 clear_clear_color
 The opposite of set_clear_color.
 
 clear_filename
 Removes the alpha filename, if it was previously set.
 
 clear_fullpath
 Removes the alpha fullpath, if it was previously set.
 
 get_alpha_filename
 Returns the alpha_filename that has been set.
 
 get_alpha_fullpath
 Returns the alpha_fullpath that has been set.
 
 get_anisotropic_degree
 Returns the degree of anisotropic filtering that should be applied to the texture.
 
 get_auto_texture_scale
 Returns the power-of-2 texture-scaling mode that will be applied to this particular texture when it is next loaded from disk.
 
 get_aux_data
 Returns a record previously recorded via set_aux_data().
 
 get_border_color
 Returns the solid color of the texture's border.
 
 get_clear_color
 Returns the color that was previously set using set_clear_color.
 
 get_component_type
 Returns the numeric interpretation of each component of the texture.
 
 get_component_width
 Returns the number of bytes stored for each color component of a texel.
 
 get_compression
 Returns the compression mode requested for this particular texture, or CM_off if the texture is not to be compressed.
 
 get_default_sampler
 This returns the default sampler state for this texture, containing the wrap and filter properties specified on the texture level; it may still be overridden by a sampler state specified at a higher level.
 
 get_effective_anisotropic_degree
 Returns the degree of anisotropic filtering that should be applied to the texture.
 
 get_effective_magfilter
 Returns the filter mode of the texture for magnification, with special treatment for FT_default.
 
 get_effective_minfilter
 Returns the filter mode of the texture for minification, with special treatment for FT_default.
 
 get_effective_quality_level
 Returns the current quality_level hint, or the global default quality_level if this texture doesn't specify a quality level.
 
 get_expected_num_mipmap_levels
 Returns the number of mipmap levels that should be defined for this texture, given the texture's size.
 
 get_expected_ram_image_size
 Returns the number of bytes that *ought* to be used by the in-memory image, based on the texture parameters.
 
 get_expected_ram_page_size
 Returns the number of bytes that should be used per each Z page of the 3-d texture.
 
 get_filename
 Returns the filename that has been set.
 
 get_format
 Returns the format of the texture, which represents both the semantic meaning of the texels and, to some extent, their storage information.
 
 get_fullpath
 Returns the fullpath that has been set.
 
 get_image_modified
 Returns a sequence number which is guaranteed to change at least every time the texture image data (including mipmap levels) are modified.
 
 get_keep_ram_image
 Returns the flag that indicates whether this Texture is eligible to have its main RAM copy of the texture memory dumped when the texture is prepared for rendering.
 
 get_loaded_from_image
 Returns the flag that indicates the texture has been loaded from a disk file or PNMImage.
 
 get_loaded_from_txo
 Returns the flag that indicates the texture has been loaded from a txo file.
 
 get_magfilter
 Returns the filter mode of the texture for magnification.
 
 get_match_framebuffer_format
 Returns true if the special flag was set that indicates to the GSG that the Texture's format should be chosen to exactly match the framebuffer's format, presumably because the application intends to copy image data from the framebuffer into the Texture (or vice-versa).
 
 get_minfilter
 Returns the filter mode of the texture for minification.
 
 get_num_components
 Returns the number of color components for each texel of the texture image.
 
 get_num_loadable_ram_mipmap_images
 Returns the number of contiguous mipmap levels that exist in RAM, up until the first gap in the sequence.
 
 get_num_pages
 Returns the total number of pages in the texture.
 
 get_num_ram_mipmap_images
 Returns the maximum number of mipmap level images available in system memory.
 
 get_num_views
 Returns the number of "views" in the texture.
 
 get_orig_file_x_size
 Returns the X size of the original disk image that this Texture was loaded from (if it came from a disk file), before any automatic rescaling by Panda.
 
 get_orig_file_y_size
 Returns the Y size of the original disk image that this Texture was loaded from (if it came from a disk file), before any automatic rescaling by Panda.
 
 get_orig_file_z_size
 Returns the Z size of the original disk image that this Texture was loaded from (if it came from a disk file), before any automatic rescaling by Panda.
 
 get_post_load_store_cache
 Returns the setting of the post_load_store_cache flag.
 
 get_properties_modified
 Returns a sequence number which is guaranteed to change at least every time the texture properties (unrelated to the image) are modified.
 
 get_quality_level
 Returns the current quality_level hint.
 
 get_ram_image_compression
 Returns the compression mode in which the ram image is already stored pre- compressed.
 
 get_ram_image_size
 Returns the total number of bytes used by the in-memory image, across all pages and views, or 0 if there is no in-memory image.
 
 get_ram_page_size
 Returns the number of bytes used by the in-memory image per page, or 0 if there is no in-memory image.
 
 get_ram_view_size
 Returns the number of bytes used by the in-memory image per view, or 0 if there is no in-memory image.
 
 get_render_to_texture
 Returns a flag on the texture that indicates whether the texture is intended to be used as a direct-render target, by binding a framebuffer to a texture and rendering directly into the texture.
 
 get_simple_image_modified
 Returns a sequence number which is guaranteed to change at least every time the texture's "simple" image data is modified.
 
 get_simple_ram_image
 Returns the image data associated with the "simple" texture image.
 
 get_simple_x_size
 Returns the width of the "simple" image in texels.
 
 get_simple_y_size
 Returns the height of the "simple" image in texels.
 
 get_texture_type
 Returns the overall interpretation of the texture.
 
 get_usage_hint
 Returns the usage hint specified for buffer textures, or UH_unspecified for all other texture types.
 
 get_wrap_u
 Returns the wrap mode of the texture in the U direction.
 
 get_wrap_v
 Returns the wrap mode of the texture in the V direction.
 
 get_wrap_w
 Returns the wrap mode of the texture in the W direction.
 
 get_x_size
 Returns the width of the texture image in texels.
 
 get_y_size
 Returns the height of the texture image in texels.
 
 get_z_size
 Returns the depth of the texture image in texels.
 
 has_alpha_filename
 Returns true if the alpha_filename has been set and is available.
 
 has_alpha_fullpath
 Returns true if the alpha_fullpath has been set and is available.
 
 has_clear_color
 Returns true if a color was previously set using set_clear_color.
 
 has_filename
 Returns true if the filename has been set and is available.
 
 has_fullpath
 Returns true if the fullpath has been set and is available.
 
 has_simple_ram_image
 Returns true if the Texture has a "simple" image available in main RAM.
 
 is_cacheable
 Returns true if there is enough information in this Texture object to write it to the bam cache successfully, false otherwise.
 
 set_alpha_filename
 Sets the name of the file that contains the image's alpha channel contents.
 
 set_alpha_fullpath
 Sets the full pathname to the file that contains the image's alpha channel contents, as found along the search path.
 
 set_anisotropic_degree
 Specifies the level of anisotropic filtering to apply to the texture.
 
 set_auto_texture_scale
 Specifies the power-of-2 texture-scaling mode that will be applied to this particular texture when it is next loaded from disk.
 
 set_aux_data
 Records an arbitrary object in the Texture, associated with a specified key.
 
 set_border_color
 Specifies the solid color of the texture's border.
 
 set_clear_color
 Sets the color that will be used to fill the texture image in absence of any image data.
 
 set_component_type
 Changes the data value for the texture components.
 
 set_compression
 Requests that this particular Texture be compressed when it is loaded into texture memory.
 
 set_default_sampler
 This sets the default sampler state for this texture, containing the wrap and filter properties specified on the texture level; it may still be overridden by a sampler state specified at a higher level.
 
 set_filename
 Sets the name of the file that contains the image's contents.
 
 set_format
 Changes the format value for the texture components.
 
 set_fullpath
 Sets the full pathname to the file that contains the image's contents, as found along the search path.
 
 set_keep_ram_image
 Sets the flag that indicates whether this Texture is eligible to have its main RAM copy of the texture memory dumped when the texture is prepared for rendering.
 
 set_loaded_from_image
 Sets the flag that indicates the texture has been loaded from a disk file or PNMImage.
 
 set_loaded_from_txo
 Sets the flag that indicates the texture has been loaded from a txo file.
 
 set_magfilter
 Sets the filtering method that should be used when viewing the texture up close.
 
 set_match_framebuffer_format
 Sets the special flag that, if true, indicates to the GSG that the Texture's format should be chosen to exactly match the framebuffer's format, presumably because the application intends to copy image data from the framebuffer into the Texture (or vice-versa).
 
 set_minfilter
 Sets the filtering method that should be used when viewing the texture from a distance.
 
 set_num_views
 Sets the number of "views" within a texture.
 
 set_post_load_store_cache
 Sets the post_load_store_cache flag.
 
 set_quality_level
 Sets a hint to the renderer about the desired performance / quality tradeoff for this particular texture.
 
 set_render_to_texture
 Sets a flag on the texture that indicates whether the texture is intended to be used as a direct-render target, by binding a framebuffer to a texture and rendering directly into the texture.
 
 set_wrap_u
 This setting determines what happens when the texture is sampled with a U value outside the range 0.0-1.0.
 
 set_wrap_v
 This setting determines what happens when the texture is sampled with a V value outside the range 0.0-1.0.
 
 set_wrap_w
 The W wrap direction is only used for 3-d textures.
 
 set_x_size
 Changes the x size indicated for the texture.
 
 set_y_size
 Changes the y size indicated for the texture.
 
 set_z_size
 Changes the z size indicated for the texture.
 
- Public Attributes inherited from TypedWritableReferenceCount
static BamReaderreader = nullptr)
 
- Public Attributes inherited from TypedObject
 get_type
 
- Public Attributes inherited from ReferenceCount
 get_ref_count
 Returns the current reference count.
 
- Public Attributes inherited from Namable
 get_name
 
 set_name
 

Friends

class Extension< Texture >
 
class PreparedGraphicsObjects
 
class TextureContext
 
class TexturePeeker
 
class TexturePool
 

Additional Inherited Members

- Static Public Attributes inherited from TypedWritable
static TypedWritable *const Null = nullptr
 

Detailed Description

Represents a texture object, which is typically a single 2-d image but may also represent a 1-d or 3-d texture image, or the six 2-d faces of a cube map texture.

A texture's image data might be stored in system RAM (see get_ram_image()) or its image may be represented in texture memory on one or more GraphicsStateGuardians (see prepare()), or both. The typical usage pattern is that a texture is loaded from an image file on disk, which copies its image data into system RAM; then the first time the texture is rendered its image data is copied to texture memory (actually, to the graphics API), and the system RAM image is automatically freed.

Definition at line 72 of file texture.h.

Member Typedef Documentation

◆ FilterType

typedef SamplerState::FilterType Texture::FilterType

Definition at line 188 of file texture.h.

◆ WrapMode

typedef SamplerState::WrapMode Texture::WrapMode

Definition at line 199 of file texture.h.

Member Enumeration Documentation

◆ ComponentType

enum Texture::ComponentType

Definition at line 87 of file texture.h.

◆ CompressionMode

enum Texture::CompressionMode

Definition at line 201 of file texture.h.

◆ DeprecatedFilterType

enum Texture::DeprecatedFilterType

Definition at line 177 of file texture.h.

◆ DeprecatedWrapMode

enum Texture::DeprecatedWrapMode

Definition at line 191 of file texture.h.

◆ Format

enum Texture::Format

Definition at line 99 of file texture.h.

◆ QualityLevel

enum Texture::QualityLevel

Definition at line 226 of file texture.h.

◆ TextureType

enum Texture::TextureType

Definition at line 76 of file texture.h.

Constructor & Destructor Documentation

◆ Texture()

Texture::Texture ( const std::string & name = std::string())
explicit

Constructs an empty texture.

The default is to set up the texture as an empty 2-d texture; follow up with one of the variants of setup_texture() if this is not what you want.

Definition at line 374 of file texture.cxx.

◆ ~Texture()

Texture::~Texture ( )
virtual

Definition at line 411 of file texture.cxx.

Member Function Documentation

◆ adjust_size()

bool Texture::adjust_size ( int & x_size,
int & y_size,
const std::string & name,
bool for_padding,
AutoTextureScale auto_texture_scale = ATS_unspecified )
static

Computes the proper size of the texture, based on the original size, the filename, and the resizing whims of the config file.

x_size and y_size should be loaded with the texture image's original size on disk. On return, they will be loaded with the texture's in-memory target size. The return value is true if the size has been adjusted, or false if it is the same.

Definition at line 2725 of file texture.cxx.

References down_to_power_2(), GraphicsStateGuardianBase::get_default_gsg(), ConfigVariableList::get_num_unique_values(), get_textures_power_2(), ConfigVariableList::get_unique_value(), GlobPattern::matches(), and up_to_power_2().

Referenced by consider_rescale().

◆ adjust_this_size()

bool Texture::adjust_this_size ( int & x_size,
int & y_size,
const std::string & name,
bool for_padding ) const
inline

Works like adjust_size, but also considers the texture class.

Movie textures, for instance, always pad outwards, regardless of textures- power-2.

Definition at line 2154 of file texture.I.

Referenced by MovieVideoCursor::setup_texture().

◆ clear_image()

void Texture::clear_image ( )
inline

Clears the texture data without changing its format or resolution.

The texture is cleared on both the graphics hardware and from RAM, unlike clear_ram_image, which only removes the data from RAM.

If a clear color has been specified using set_clear_color, the texture will be cleared using a solid color.

The texture data will be cleared the first time in which the texture is used after this method is called.

Definition at line 230 of file texture.I.

◆ clear_ram_image()

void Texture::clear_ram_image ( )
inline

Discards the current system-RAM image.

Definition at line 1439 of file texture.I.

Referenced by GraphicsOutput::add_render_texture(), and DXTextureContext9::extract_texture_data().

◆ clear_ram_mipmap_image()

void Texture::clear_ram_mipmap_image ( int n)

Discards the current system-RAM image for the nth mipmap level.

Definition at line 1276 of file texture.cxx.

◆ clear_ram_mipmap_images()

void Texture::clear_ram_mipmap_images ( )
inline

Discards the current system-RAM image for all mipmap levels, except level 0 (the base image).

Definition at line 1674 of file texture.I.

◆ clear_simple_ram_image()

void Texture::clear_simple_ram_image ( )
inline

Discards the current "simple" image.

Definition at line 1779 of file texture.I.

◆ compress_ram_image()

bool Texture::compress_ram_image ( Texture::CompressionMode compression = CM_on,
Texture::QualityLevel quality_level = QL_default,
GraphicsStateGuardianBase * gsg = nullptr )
inline

Attempts to compress the texture's RAM image internally, to a format supported by the indicated GSG.

In order for this to work, the squish library must have been compiled into Panda.

If compression is CM_on, then an appropriate compression method that is supported by the indicated GSG is automatically chosen. If the GSG pointer is NULL, any of the standard DXT1/3/5 compression methods will be used, regardless of whether it is supported.

If compression is any specific compression method, that method is used regardless of whether the GSG supports it.

quality_level determines the speed/quality tradeoff of the compression. If it is QL_default, the texture's own quality_level parameter is used.

Returns true if successful, false otherwise.

Definition at line 1479 of file texture.I.

Referenced by DXTextureContext9::create_texture().

◆ consider_rescale() [1/2]

void Texture::consider_rescale ( PNMImage & pnmimage)

Asks the PNMImage to change its scale when it reads the image, according to the whims of the Config.prc file.

For most efficient results, this method should be called after pnmimage.read_header() has been called, but before pnmimage.read(). This method may also be called after pnmimage.read(), i.e. when the pnmimage is already loaded; in this case it will rescale the image on the spot. Also see rescale_texture().

Definition at line 2038 of file texture.cxx.

References consider_rescale(), and get_auto_texture_scale.

Referenced by consider_rescale().

◆ consider_rescale() [2/2]

void Texture::consider_rescale ( PNMImage & pnmimage,
const std::string & name,
AutoTextureScale auto_texture_scale = ATS_unspecified )
static

Asks the PNMImage to change its scale when it reads the image, according to the whims of the Config.prc file.

For most efficient results, this method should be called after pnmimage.read_header() has been called, but before pnmimage.read(). This method may also be called after pnmimage.read(), i.e. when the pnmimage is already loaded; in this case it will rescale the image on the spot. Also see rescale_texture().

Definition at line 2053 of file texture.cxx.

References adjust_size(), PNMImage::get_color_space(), PNMImageHeader::get_maxval, PNMImageHeader::get_num_channels, PNMImageHeader::get_type, PNMImageHeader::get_x_size(), PNMImageHeader::get_y_size(), PNMImage::is_valid(), PNMImage::quick_filter_from(), PNMImage::set_read_size(), and PNMImage::take_from().

◆ cull_callback()

bool Texture::cull_callback ( CullTraverser * trav,
const CullTraverserData & data ) const
virtual

If has_cull_callback() returns true, this function will be called during the cull traversal to perform any additional operations that should be performed at cull time.

This is called each time the Texture is discovered applied to a Geom in the traversal. It should return true if the Geom is visible, false if it should be omitted.

Reimplemented in VideoTexture.

Definition at line 2587 of file texture.cxx.

◆ down_to_power_2()

int Texture::down_to_power_2 ( int value)
static

Returns the largest power of 2 less than or equal to value.

Definition at line 2019 of file texture.cxx.

References get_next_higher_bit().

Referenced by adjust_size(), and generate_simple_ram_image().

◆ ensure_loader_type()

void Texture::ensure_loader_type ( const Filename & filename)
virtual

May be called prior to calling read_txo() or any bam-related Texture- creating callback, to ensure that the proper dynamic libraries for a Texture of the current class type, and the indicated filename, have been already loaded.

This is a low-level function that should not normally need to be called directly by the user.

Note that for best results you must first create a Texture object of the appropriate class type for your filename, for instance with TexturePool::make_texture().

Definition at line 2835 of file texture.cxx.

◆ estimate_texture_memory()

size_t Texture::estimate_texture_memory ( ) const

Estimates the amount of texture memory that will be consumed by loading this texture.

This returns a value that is not specific to any particular graphics card or driver; it tries to make a reasonable assumption about how a driver will load the texture. It does not account for texture compression or anything fancy. This is mainly useful for debugging and reporting purposes.

Returns a value in bytes.

Definition at line 674 of file texture.cxx.

References uses_mipmaps().

◆ finalize()

void Texture::finalize ( BamReader * manager)
virtual

Called by the BamReader to perform any final actions needed for setting up the object after all objects have been read and all pointers have been completed.

Reimplemented from TypedWritable.

Definition at line 10027 of file texture.cxx.

References ReferenceCount::get_ref_count, and ReferenceCount::unref().

◆ force_init_type()

virtual TypeHandle Texture::force_init_type ( )
inlinevirtual

Reimplemented from TypedWritableReferenceCount.

Definition at line 1110 of file texture.h.

◆ format_component_type()

string Texture::format_component_type ( ComponentType ct)
static

Returns the indicated ComponentType converted to a string word.

Definition at line 2128 of file texture.cxx.

◆ format_compression_mode()

string Texture::format_compression_mode ( CompressionMode cm)
static

Returns the indicated CompressionMode converted to a string word.

Definition at line 2419 of file texture.cxx.

◆ format_format()

string Texture::format_format ( Format f)
static

Returns the indicated Format converted to a string word.

Definition at line 2187 of file texture.cxx.

◆ format_quality_level()

string Texture::format_quality_level ( QualityLevel tql)
static

Returns the indicated QualityLevel converted to a string word.

Definition at line 2504 of file texture.cxx.

◆ format_texture_type()

string Texture::format_texture_type ( TextureType tt)
static

Returns the indicated TextureType converted to a string word.

Definition at line 2076 of file texture.cxx.

◆ generate_alpha_scale_map()

void Texture::generate_alpha_scale_map ( )

Generates a special 256x1 1-d texture that can be used to apply an arbitrary alpha scale to objects by judicious use of texture matrix.

The texture is a gradient, with an alpha of 0 on the left (U = 0), and 255 on the right (U = 1).

Definition at line 525 of file texture.cxx.

◆ generate_normalization_cube_map()

void Texture::generate_normalization_cube_map ( int size)

Generates a special cube map image in the texture that can be used to apply bump mapping effects: for each texel in the cube map that is indexed by the 3-d texture coordinates (x, y, z), the resulting value is the normalized vector (x, y, z) (compressed from -1..1 into 0..1).

Definition at line 423 of file texture.cxx.

◆ generate_ram_mipmap_images()

void Texture::generate_ram_mipmap_images ( )
inline

Automatically fills in the n mipmap levels of the Texture, based on the texture's source image.

This requires the texture's uncompressed ram image to be available in system memory. If it is not already, it will be fetched if possible.

This call is not normally necessary, since the mipmap levels will be generated automatically if needed. But there may be certain cases in which you would like to call this explicitly.

Definition at line 1691 of file texture.I.

Referenced by DXTextureContext9::create_texture().

◆ generate_simple_ram_image()

void Texture::generate_simple_ram_image ( )

Computes the "simple" ram image by loading the main RAM image, if it is not already available, and reducing it to 16x16 or smaller.

This may be an expensive operation.

Definition at line 1323 of file texture.cxx.

References PNMImage::add_alpha(), PNMImage::alpha_fill(), down_to_power_2(), PNMImageHeader::get_num_channels, ConfigVariableInt::get_word(), PNMImageHeader::has_alpha(), PNMImage::quick_filter_from(), PNMImage::set_num_channels(), and PNMImage::take_from().

◆ get_active()

bool Texture::get_active ( PreparedGraphicsObjects * prepared_objects) const

Returns true if this Texture was rendered in the most recent frame within the indicated GSG.

Definition at line 1518 of file texture.cxx.

References BufferContext::get_active.

◆ get_class_type()

static TypeHandle Texture::get_class_type ( )
inlinestatic

Definition at line 1098 of file texture.h.

◆ get_clear_data()

vector_uchar Texture::get_clear_data ( ) const
inline

Returns the raw image data for a single pixel if it were set to the clear color.

Definition at line 287 of file texture.I.

◆ get_data_size_bytes()

size_t Texture::get_data_size_bytes ( PreparedGraphicsObjects * prepared_objects) const

Returns the number of bytes which the texture is reported to consume within graphics memory, for the indicated GSG.

This may return a nonzero value even if the texture is not currently resident; you should also check get_resident() if you want to know how much space the texture is actually consuming right now.

Definition at line 1491 of file texture.cxx.

References BufferContext::get_data_size_bytes.

◆ get_expected_mipmap_num_pages()

int Texture::get_expected_mipmap_num_pages ( int n) const
inline

Returns the total number of pages that the nth mipmap level should have, based on the texture's size.

This is usually the same as get_expected_mipmap_z_size(), except for a multiview texture, in which case it is get_expected_mipmap_z_size() * get_num_views().

Definition at line 1217 of file texture.I.

◆ get_expected_mipmap_x_size()

int Texture::get_expected_mipmap_x_size ( int n) const
inline

Returns the x_size that the nth mipmap level should have, based on the texture's size.

Definition at line 1185 of file texture.I.

Referenced by DXTextureContext9::extract_texture_data().

◆ get_expected_mipmap_y_size()

int Texture::get_expected_mipmap_y_size ( int n) const
inline

Returns the y_size that the nth mipmap level should have, based on the texture's size.

Definition at line 1195 of file texture.I.

Referenced by DXTextureContext9::extract_texture_data().

◆ get_expected_mipmap_z_size()

int Texture::get_expected_mipmap_z_size ( int n) const
inline

Returns the z_size that the nth mipmap level should have, based on the texture's size.

Definition at line 1205 of file texture.I.

◆ get_expected_ram_mipmap_image_size()

size_t Texture::get_expected_ram_mipmap_image_size ( int n) const
inline

Returns the number of bytes that *ought* to be used by the in-memory image for mipmap level n, based on the texture parameters.

Definition at line 1601 of file texture.I.

◆ get_expected_ram_mipmap_page_size()

size_t Texture::get_expected_ram_mipmap_page_size ( int n) const
inline

Returns the number of bytes that should be used per each Z page of the 3-d texture, for mipmap level n.

For a 2-d or 1-d texture, this is the same as get_expected_ram_mipmap_view_size(n).

Definition at line 1624 of file texture.I.

◆ get_expected_ram_mipmap_view_size()

size_t Texture::get_expected_ram_mipmap_view_size ( int n) const
inline

Returns the number of bytes that *ought* to be used by each view of the in- memory image for mipmap level n, based on the texture parameters.

For a normal, non-multiview texture, this is the same as get_expected_ram_mipmap_image_size(n).

Definition at line 1613 of file texture.I.

◆ get_keep_ram_image()

virtual bool Texture::get_keep_ram_image ( ) const
virtual

Reimplemented in VideoTexture.

◆ get_pad_x_size()

int Texture::get_pad_x_size ( ) const
inline

Returns size of the pad region.

See set_pad_size.

Definition at line 620 of file texture.I.

Referenced by GraphicsStateGuardian::fetch_specified_part(), and CardMaker::set_uv_range().

◆ get_pad_y_size()

int Texture::get_pad_y_size ( ) const
inline

Returns size of the pad region.

See set_pad_size.

Definition at line 629 of file texture.I.

Referenced by GraphicsStateGuardian::fetch_specified_part(), and CardMaker::set_uv_range().

◆ get_pad_z_size()

int Texture::get_pad_z_size ( ) const
inline

Returns size of the pad region.

See set_pad_size.

Definition at line 638 of file texture.I.

Referenced by GraphicsStateGuardian::fetch_specified_part().

◆ get_ram_image()

CPTA_uchar Texture::get_ram_image ( )
inline

Returns the system-RAM image data associated with the texture.

If the texture does not currently have an associated RAM image, and the texture was generated by loading an image from a disk file (the most common case), this forces the reload of the same texture. This can happen if keep_texture_ram is configured to false, and we have previously prepared this texture with a GSG.

Note that it is not correct to call has_ram_image() first to test whether this function will fail. A false return value from has_ram_image() indicates only that get_ram_image() may need to reload the texture from disk, which it will do automatically. However, you can call might_have_ram_image(), which will return true if the ram image exists, or there is a reasonable reason to believe it can be loaded.

On the other hand, it is possible that the texture cannot be found on disk or is otherwise unavailable. If that happens, this function will return NULL. There is no way to predict with 100% accuracy whether get_ram_image() will return NULL without calling it first; might_have_ram_image() is the closest.

Definition at line 1356 of file texture.I.

Referenced by DXTextureContext9::create_texture().

◆ get_ram_image_as()

CPTA_uchar Texture::get_ram_image_as ( const std::string & requested_format)

Returns the uncompressed system-RAM image data associated with the texture.

Rather than just returning a pointer to the data, like get_uncompressed_ram_image, this function first processes the data and reorders the components using the specified format string, and places these into a new char array.

The 'format' argument should specify in which order the components of the texture must be. For example, valid format strings are "RGBA", "GA", "ABRG" or "AAA". A component can also be written as "0" or "1", which means an empty/black or a full/white channel, respectively.

This function is particularly useful to copy an image in-memory to a different library (for example, PIL or wxWidgets) that require a different component order than Panda's internal format, BGRA. Note, however, that this conversion can still be too slow if you want to do it every frame, and should thus be avoided for that purpose.

The only requirement for the reordering is that an uncompressed image must be available. If the RAM image is compressed, it will attempt to re-load the texture from disk, if it doesn't find an uncompressed image there, it will return NULL.

Definition at line 7396 of file texture.cxx.

References has_alpha(), and upcase().

◆ get_ram_mipmap_image()

CPTA_uchar Texture::get_ram_mipmap_image ( int n) const

Returns the system-RAM image data associated with the nth mipmap level, if present.

Returns NULL if the nth mipmap level is not present.

Definition at line 1213 of file texture.cxx.

◆ get_ram_mipmap_image_size()

size_t Texture::get_ram_mipmap_image_size ( int n) const
inline

Returns the number of bytes used by the in-memory image for mipmap level n, or 0 if there is no in-memory image for this mipmap level.

Definition at line 1548 of file texture.I.

◆ get_ram_mipmap_page_size()

size_t Texture::get_ram_mipmap_page_size ( int n) const
inline

Returns the number of bytes used by the in-memory image per page for mipmap level n, or 0 if there is no in-memory image for this mipmap level.

For a non-compressed texture, this is the same as get_expected_ram_mipmap_page_size(). For a compressed texture, this may be a smaller value. (We do assume that all pages will be the same size on a compressed texture).

Definition at line 1591 of file texture.I.

◆ get_ram_mipmap_pointer()

void * Texture::get_ram_mipmap_pointer ( int n) const

Similiar to get_ram_mipmap_image(), however, in this case the void pointer for the given ram image is returned.

This will be NULL unless it has been explicitly set.

Definition at line 1227 of file texture.cxx.

◆ get_ram_mipmap_view_size()

size_t Texture::get_ram_mipmap_view_size ( int n) const
inline

Returns the number of bytes used by the in-memory image per view for mipmap level n, or 0 if there is no in-memory image for this mipmap level.

A "view" is a collection of z_size pages for each mipmap level. Most textures have only one view, except for multiview or stereo textures.

For a non-compressed texture, this is the same as get_expected_ram_mipmap_view_size(). For a compressed texture, this may be a smaller value. (We do assume that all pages will be the same size on a compressed texture).

Definition at line 1576 of file texture.I.

◆ get_resident()

bool Texture::get_resident ( PreparedGraphicsObjects * prepared_objects) const

Returns true if this Texture is reported to be resident within graphics memory for the indicated GSG.

Definition at line 1545 of file texture.cxx.

References BufferContext::get_resident.

◆ get_simple_ram_image_size()

size_t Texture::get_simple_ram_image_size ( ) const
inline

Returns the number of bytes used by the "simple" image, or 0 if there is no simple image.

Definition at line 1732 of file texture.I.

◆ get_tex_scale()

LVecBase2 Texture::get_tex_scale ( ) const
inline

Returns a scale pair that is suitable for applying to geometry via NodePath::set_tex_scale(), which will convert texture coordinates on the geometry from the range 0..1 into the appropriate range to render the video part of the texture.

This is necessary only if a padding size has been set via set_pad_size() (or implicitly via something like "textures-power-2 pad" in the config.prc file). In this case, this is a convenient way to generate UV's that reflect the built-in padding size.

Definition at line 655 of file texture.I.

◆ get_textures_power_2()

AutoTextureScale Texture::get_textures_power_2 ( )
inlinestatic

This flag returns ATS_none, ATS_up, or ATS_down and controls the scaling of textures in general.

It is initialized from the config variable of the same name, but it can be subsequently adjusted. See also get_auto_texture_scale().

Definition at line 1863 of file texture.I.

Referenced by adjust_size(), and PT().

◆ get_type()

virtual TypeHandle Texture::get_type ( ) const
inlinevirtual

Reimplemented from TypedWritableReferenceCount.

Definition at line 1107 of file texture.h.

◆ get_uncompressed_ram_image()

CPTA_uchar Texture::get_uncompressed_ram_image ( )
inline

Returns the system-RAM image associated with the texture, in an uncompressed form if at all possible.

If get_ram_image_compression() is CM_off, then the system-RAM image is already uncompressed, and this returns the same thing as get_ram_image().

If get_ram_image_compression() is anything else, then the system-RAM image is compressed. In this case, the image will be reloaded from the *original* file (not from the cache), in the hopes that an uncompressed image will be found there.

If an uncompressed image cannot be found, returns NULL.

Definition at line 1403 of file texture.I.

Referenced by DXTextureContext9::create_texture().

◆ has_all_ram_mipmap_images()

bool Texture::has_all_ram_mipmap_images ( ) const
inline

Returns true if all expected mipmap levels have been defined and exist in the system RAM, or false if even one mipmap level is missing.

Definition at line 1538 of file texture.I.

◆ has_alpha()

bool Texture::has_alpha ( Format format)
static

Returns true if the indicated format includes alpha, false otherwise.

Definition at line 2631 of file texture.cxx.

Referenced by EggRenderState::fill_state(), and get_ram_image_as().

◆ has_auto_texture_scale()

bool Texture::has_auto_texture_scale ( ) const
inline

Returns true if set_auto_texture_scale() has been set to something other than ATS_unspecified for this particular texture.

Definition at line 1841 of file texture.I.

◆ has_binary_alpha()

bool Texture::has_binary_alpha ( Format format)
static

Returns true if the indicated format includes a binary alpha only, false otherwise.

Definition at line 2662 of file texture.cxx.

Referenced by EggRenderState::fill_state().

◆ has_compression()

bool Texture::has_compression ( ) const
inline

Returns true if the texture indicates it wants to be compressed, either with CM_on or higher, or CM_default and compressed-textures is true.

If true returned, this is not a guarantee that the texture is actually successfully compressed on the GSG. It may be that the GSG does not support the requested compression mode, in which case the texture may actually be stored uncompressed in texture memory.

Definition at line 1102 of file texture.I.

◆ has_cull_callback()

bool Texture::has_cull_callback ( ) const
virtual

Should be overridden by derived classes to return true if cull_callback() has been defined.

Otherwise, returns false to indicate cull_callback() does not need to be called for this node during the cull traversal.

Reimplemented in VideoTexture.

Definition at line 2573 of file texture.cxx.

◆ has_ram_image()

bool Texture::has_ram_image ( ) const
inline

Returns true if the Texture has its image contents available in main RAM, false if it exists only in texture memory or in the prepared GSG context.

Note that this has nothing to do with whether get_ram_image() will fail or not. Even if has_ram_image() returns false, get_ram_image() may still return a valid RAM image, because get_ram_image() will automatically load the texture from disk if necessary. The only thing has_ram_image() tells you is whether the texture is available right now without hitting the disk first.

Note also that if an application uses only one GSG, it may appear that has_ram_image() returns true if the texture has not yet been loaded by the GSG, but this correlation is not true in general and should not be depended on. Specifically, if an application ever uses multiple GSG's in its lifetime (for instance, by opening more than one window, or by closing its window and opening another one later), then has_ram_image() may well return false on textures that have never been loaded on the current GSG.

Definition at line 1242 of file texture.I.

Referenced by DXTextureContext9::create_texture(), DXGraphicsStateGuardian9::do_framebuffer_copy_to_ram(), and DXGraphicsStateGuardian9::upload_texture().

◆ has_ram_mipmap_image()

bool Texture::has_ram_mipmap_image ( int n) const
inline

Returns true if the Texture has the nth mipmap level available in system memory, false otherwise.

If the texture's minfilter mode requires mipmapping (see uses_mipmaps()), and all the texture's mipmap levels are not available when the texture is rendered, they will be generated automatically.

Definition at line 1528 of file texture.I.

◆ has_textures_power_2()

bool Texture::has_textures_power_2 ( )
inlinestatic

If true, then get_textures_power_2 has been set using set_textures_power_2.

If false, then get_textures_power_2 simply returns the config variable of the same name.

Definition at line 1877 of file texture.I.

◆ has_uncompressed_ram_image()

bool Texture::has_uncompressed_ram_image ( ) const
inline

Returns true if the Texture has its image contents available in main RAM and is uncompressed, false otherwise.

See has_ram_image().

Definition at line 1252 of file texture.I.

Referenced by DXGraphicsStateGuardian9::upload_texture().

◆ init_type()

static void Texture::init_type ( )
inlinestatic

Definition at line 1101 of file texture.h.

◆ is_integer()

bool Texture::is_integer ( Format format)
static

Returns true if the indicated format is an integer format, false otherwise.

Definition at line 2694 of file texture.cxx.

◆ is_prepared()

bool Texture::is_prepared ( PreparedGraphicsObjects * prepared_objects) const

Returns true if the texture has already been prepared or enqueued for preparation on the indicated GSG, false otherwise.

Definition at line 1443 of file texture.cxx.

References PreparedGraphicsObjects::is_texture_queued().

Referenced by PreparedGraphicsObjects::is_texture_prepared().

◆ is_specific()

bool Texture::is_specific ( Texture::CompressionMode compression)
static

Returns true if the indicated compression mode is one of the specific compression types, false otherwise.

Definition at line 2615 of file texture.cxx.

◆ is_srgb()

bool Texture::is_srgb ( Format format)
static

Returns true if the indicated format is in the sRGB color space, false otherwise.

Definition at line 2677 of file texture.cxx.

Referenced by DXGraphicsStateGuardian9::apply_texture().

◆ is_unsigned()

bool Texture::is_unsigned ( Texture::ComponentType ctype)
static

Returns true if the indicated component type is unsigned, false otherwise.

Definition at line 2603 of file texture.cxx.

◆ load() [1/4]

bool Texture::load ( const PfmFile & pfm,
const LoaderOptions & options = LoaderOptions() )
inline

Replaces the texture with the indicated image.

Definition at line 388 of file texture.I.

References uses_mipmaps().

◆ load() [2/4]

bool Texture::load ( const PfmFile & pfm,
int z,
int n,
const LoaderOptions & options = LoaderOptions() )
inline

Stores the indicated image in the given page and mipmap level.

See read().

Definition at line 405 of file texture.I.

◆ load() [3/4]

bool Texture::load ( const PNMImage & pnmimage,
const LoaderOptions & options = LoaderOptions() )
inline

Replaces the texture with the indicated image.

Definition at line 357 of file texture.I.

References uses_mipmaps().

Referenced by IESDataset::generate_dataset_texture_into(), and PT().

◆ load() [4/4]

bool Texture::load ( const PNMImage & pnmimage,
int z,
int n,
const LoaderOptions & options = LoaderOptions() )
inline

Stores the indicated image in the given page and mipmap level.

See read().

Definition at line 374 of file texture.I.

◆ load_related()

Texture * Texture::load_related ( const InternalName * suffix) const

Loads a texture whose filename is derived by concatenating a suffix to the filename of this texture.

May return NULL, for example, if this texture doesn't have a filename.

Definition at line 972 of file texture.cxx.

References VirtualFileSystem::exists(), Filename::get_basename_wo_extension(), VirtualFileSystem::get_global_ptr(), InternalName::get_name, TexturePool::load_texture(), and Filename::set_basename_wo_extension().

◆ load_sub_image()

bool Texture::load_sub_image ( const PNMImage & image,
int x,
int y,
int z = 0,
int n = 0 )
inline

Stores the indicated image in a region of the texture.

The texture properties remain unchanged. This can be more efficient than updating an entire texture, but has a few restrictions: for one, you must ensure that the texture is still in RAM (eg. using set_keep_ram_image) and it may not be compressed.

Definition at line 423 of file texture.I.

◆ make_ram_image()

PTA_uchar Texture::make_ram_image ( )
inline

Discards the current system-RAM image for the texture, if any, and allocates a new buffer of the appropriate size.

Returns the new buffer.

This does *not* affect keep_ram_image.

Definition at line 1415 of file texture.I.

◆ make_ram_mipmap_image()

PTA_uchar Texture::make_ram_mipmap_image ( int n)
inline

Discards the current system-RAM image for the nth mipmap level, if any, and allocates a new buffer of the appropriate size.

Returns the new buffer.

This does *not* affect keep_ram_image.

Definition at line 1650 of file texture.I.

◆ might_have_ram_image()

bool Texture::might_have_ram_image ( ) const
inline

Returns true if the texture's image contents are currently available in main RAM, or there is reason to believe it can be loaded on demand.

That is, this function returns a "best guess" as to whether get_ram_image() will succeed without actually calling it first.

Definition at line 1264 of file texture.I.

Referenced by DXGraphicsStateGuardian9::apply_texture(), and DXGraphicsStateGuardian9::upload_texture().

◆ modify_ram_image()

PTA_uchar Texture::modify_ram_image ( )
inline

Returns a modifiable pointer to the system-RAM image.

This assumes the RAM image should be uncompressed. If the RAM image has been dumped, or is stored compressed, creates a new one.

This does *not* affect keep_ram_image.

Definition at line 1382 of file texture.I.

Referenced by MovieVideoCursor::apply_to_texture(), MovieVideoCursor::apply_to_texture_alpha(), MovieVideoCursor::apply_to_texture_rgb(), and DXTextureContext9::d3d_surface_to_texture().

◆ modify_ram_mipmap_image()

PTA_uchar Texture::modify_ram_mipmap_image ( int n)
inline

Returns a modifiable pointer to the system-RAM image for the nth mipmap level.

This assumes the RAM image is uncompressed; if this is not the case, raises an assertion.

This does *not* affect keep_ram_image.

Definition at line 1637 of file texture.I.

◆ modify_simple_ram_image()

PTA_uchar Texture::modify_simple_ram_image ( )

Returns a modifiable pointer to the internal "simple" texture image.

See set_simple_ram_image().

Definition at line 1291 of file texture.cxx.

◆ new_simple_ram_image()

PTA_uchar Texture::new_simple_ram_image ( int x_size,
int y_size )

Creates an empty array for the simple ram image of the indicated size, and returns a modifiable pointer to the new array.

See set_simple_ram_image().

Definition at line 1302 of file texture.cxx.

◆ prepare_now()

TextureContext * Texture::prepare_now ( int view,
PreparedGraphicsObjects * prepared_objects,
GraphicsStateGuardianBase * gsg )

Creates a context for the texture on the particular GSG, if it does not already exist.

Returns the new (or old) TextureContext. This assumes that the GraphicsStateGuardian is the currently active rendering context and that it is ready to accept new textures. If this is not necessarily the case, you should use prepare() instead.

Normally, this is not called directly except by the GraphicsStateGuardian; a texture does not need to be explicitly prepared by the user before it may be rendered.

Definition at line 1980 of file texture.cxx.

References PreparedGraphicsObjects::prepare_texture_now().

Referenced by PreparedGraphicsObjects::begin_frame(), DXGraphicsStateGuardian9::extract_texture_data(), DXGraphicsStateGuardian9::framebuffer_copy_to_texture(), and wdxGraphicsBuffer9::select_target_tex_page().

◆ read() [1/4]

bool Texture::read ( const Filename & fullpath,
const Filename & alpha_fullpath,
int primary_file_num_channels,
int alpha_file_channel,
const LoaderOptions & options = LoaderOptions() )

Combine a 3-component image with a grayscale image to get a 4-component image.

See the description of the full-parameter read() method for the meaning of the primary_file_num_channels and alpha_file_channel parameters.

Definition at line 567 of file texture.cxx.

◆ read() [2/4]

bool Texture::read ( const Filename & fullpath,
const Filename & alpha_fullpath,
int primary_file_num_channels,
int alpha_file_channel,
int z,
int n,
bool read_pages,
bool read_mipmaps,
BamCacheRecord * record = nullptr,
const LoaderOptions & options = LoaderOptions() )

Reads the texture from the indicated filename.

If primary_file_num_channels is not 0, it specifies the number of components to downgrade the image to if it is greater than this number.

If the filename has the extension .txo, this implicitly reads a texture object instead of a filename (which replaces all of the texture properties). In this case, all the rest of the parameters are ignored, and the filename should not contain any hash marks; just the one named file will be read, since a single .txo file can contain all pages and mipmaps necessary to define a texture.

If alpha_fullpath is not empty, it specifies the name of a file from which to retrieve the alpha. In this case, alpha_file_channel represents the numeric channel of this image file to use as the resulting texture's alpha channel; usually, this is 0 to indicate the grayscale combination of r, g, b; or it may be a one-based channel number, e.g. 1 for the red channel, 2 for the green channel, and so on.

If read pages is false, then z indicates the page number into which this image will be assigned. Normally this is 0 for the first (or only) page of the texture. 3-D textures have one page for each level of depth, and cube map textures always have six pages.

If read_pages is true, multiple images will be read at once, one for each page of a cube map or a 3-D texture. In this case, the filename should contain a sequence of one or more hash marks ("#") which will be filled in with the z value of each page, zero-based. In this case, the z parameter indicates the maximum z value that will be loaded, or 0 to load all filenames that exist.

If read_mipmaps is false, then n indicates the mipmap level to which this image will be assigned. Normally this is 0 for the base texture image, but it is possible to load custom mipmap levels into the later images. After the base texture image is loaded (thus defining the size of the texture), you can call get_expected_num_mipmap_levels() to determine the maximum sensible value for n.

If read_mipmaps is true, multiple images will be read as above, but this time the images represent the different mipmap levels of the texture image. In this case, the n parameter indicates the maximum n value that will be loaded, or 0 to load all filenames that exist (up to the expected number of mipmap levels).

If both read_pages and read_mipmaps is true, then both sequences will be read; the filename should contain two sequences of hash marks, separated by some character such as a hyphen, underscore, or dot. The first hash mark sequence will be filled in with the mipmap level, while the second hash mark sequence will be the page index.

This method implicitly sets keep_ram_image to false.

Definition at line 650 of file texture.cxx.

◆ read() [3/4]

bool Texture::read ( const Filename & fullpath,
const LoaderOptions & options = LoaderOptions() )

Reads the named filename into the texture.

Definition at line 550 of file texture.cxx.

◆ read() [4/4]

bool Texture::read ( const Filename & fullpath,
int z,
int n,
bool read_pages,
bool read_mipmaps,
const LoaderOptions & options = LoaderOptions() )

Reads a single file into a single page or mipmap level, or automatically reads a series of files into a series of pages and/or mipmap levels.

See the description of the full-parameter read() method for the meaning of the various parameters.

Definition at line 587 of file texture.cxx.

◆ read_dds()

bool Texture::read_dds ( std::istream & in,
const std::string & filename = "",
bool header_only = false )

Reads the texture from a DDS file object.

This is a Microsoft-defined file format; it is similar in principle to a txo object, in that it is designed to contain the texture image in a form as similar as possible to its runtime image, and it can contain mipmaps, pre-compressed textures, and so on.

As with read_txo, the filename is just for reference.

Definition at line 942 of file texture.cxx.

◆ read_ktx()

bool Texture::read_ktx ( std::istream & in,
const std::string & filename = "",
bool header_only = false )

Reads the texture from a KTX file object.

This is a Khronos-defined file format; it is similar in principle to a dds object, in that it is designed to contain the texture image in a form as similar as possible to its runtime image, and it can contain mipmaps, pre-compressed textures, and so on.

As with read_dds, the filename is just for reference.

Definition at line 959 of file texture.cxx.

◆ read_txo()

bool Texture::read_txo ( std::istream & in,
const std::string & filename = "" )

Reads the texture from a Panda texture object.

This defines the complete Texture specification, including the image data as well as all texture properties. This only works if the txo file contains a static Texture image, as opposed to a subclass of Texture such as a movie texture.

Pass a real filename if it is available, or empty string if it is not.

Definition at line 844 of file texture.cxx.

◆ register_with_read_factory()

void Texture::register_with_read_factory ( )
static

Factory method to generate a Texture object.

Definition at line 9999 of file texture.cxx.

References BamReader::get_factory(), and Factory< Type >::register_factory().

◆ release()

bool Texture::release ( PreparedGraphicsObjects * prepared_objects)

Frees the texture context only on the indicated object, if it exists there.

Returns true if it was released, false if it had not been prepared.

Definition at line 1572 of file texture.cxx.

References PreparedGraphicsObjects::dequeue_texture(), and PreparedGraphicsObjects::release_texture().

Referenced by PreparedGraphicsObjects::release_texture().

◆ release_all()

int Texture::release_all ( )

Frees the context allocated on all objects for which the texture has been declared.

Returns the number of contexts which have been freed.

Definition at line 1598 of file texture.cxx.

References PreparedGraphicsObjects::release_texture().

◆ reload()

bool Texture::reload ( )
inline

Re-reads the Texture from its disk file.

Useful when you know the image on disk has recently changed, and you want to update the Texture image.

Returns true on success, false on failure (in which case, the Texture may or may not still be valid).

Definition at line 472 of file texture.I.

◆ rescale_texture()

bool Texture::rescale_texture ( )
inline

This method is similar to consider_rescale(), but instead of scaling a separate PNMImage, it will ask the Texture to rescale its own internal image to a power of 2, according to the config file requirements.

This may be useful after loading a Texture image by hand, instead of reading it from a disk file. Returns true if the texture is changed, false if it was not.

Definition at line 2143 of file texture.I.

◆ set_orig_file_size()

void Texture::set_orig_file_size ( int x,
int y,
int z = 1 )

Specifies the size of the texture as it exists in its original disk file, before any Panda scaling.

Definition at line 1960 of file texture.cxx.

◆ set_pad_size()

void Texture::set_pad_size ( int x = 0,
int y = 0,
int z = 0 )
inline

Sets the size of the pad region.

Sometimes, when a video card demands power-of-two textures, it is necessary to create a big texture and then only use a portion of it. The pad region indicates which portion of the texture is not really in use. All operations use the texture as a whole, including the pad region, unless they explicitly state that they use only the non-pad region.

Changing the texture's size clears the pad region.

Definition at line 677 of file texture.I.

Referenced by MovieVideoCursor::setup_texture().

◆ set_ram_image()

void Texture::set_ram_image ( CPTA_uchar image,
Texture::CompressionMode compression = CM_off,
size_t page_size = 0 )
inline

Replaces the current system-RAM image with the new data.

If compression is not CM_off, it indicates that the new data is already pre-compressed in the indicated format.

This does *not* affect keep_ram_image.

Definition at line 1429 of file texture.I.

Referenced by DXTextureContext9::extract_texture_data().

◆ set_ram_image_as()

void Texture::set_ram_image_as ( CPTA_uchar image,
const std::string & provided_format )

Replaces the current system-RAM image with the new data, converting it first if necessary from the indicated component-order format.

See get_ram_image_as() for specifications about the format. This method cannot support compressed image data or sub-pages; use set_ram_image() for that.

Definition at line 1024 of file texture.cxx.

References upcase().

◆ set_ram_mipmap_image()

void Texture::set_ram_mipmap_image ( int n,
CPTA_uchar image,
size_t page_size = 0 )
inline

Replaces the current system-RAM image for the indicated mipmap level with the new data.

If compression is not CM_off, it indicates that the new data is already pre-compressed in the indicated format.

This does *not* affect keep_ram_image.

Definition at line 1664 of file texture.I.

Referenced by DXTextureContext9::extract_texture_data().

◆ set_ram_mipmap_pointer()

void Texture::set_ram_mipmap_pointer ( int n,
void * image,
size_t page_size = 0 )

Sets an explicit void pointer as the texture's mipmap image for the indicated level.

This is a special call to direct a texture to reference some external image location, for instance from a webcam input.

The texture will henceforth reference this pointer directly, instead of its own internal storage; the user is responsible for ensuring the data at this address remains allocated and valid, and in the correct format, during the lifetime of the texture.

Definition at line 1246 of file texture.cxx.

Referenced by set_ram_mipmap_pointer_from_int().

◆ set_ram_mipmap_pointer_from_int()

void Texture::set_ram_mipmap_pointer_from_int ( long long pointer,
int n,
int page_size )

Accepts a raw pointer cast as an int, which is then passed to set_ram_mipmap_pointer(); see the documentation for that method.

This variant is particularly useful to set an external pointer from a language like Python, which doesn't support void pointers directly.

Definition at line 1268 of file texture.cxx.

References set_ram_mipmap_pointer().

◆ set_simple_ram_image()

void Texture::set_simple_ram_image ( CPTA_uchar image,
int x_size,
int y_size )
inline

Replaces the internal "simple" texture image.

This can be used as an option to display while the main texture image is being loaded from disk. It is normally a very small image, 16x16 or smaller (and maybe even 1x1), that is designed to give just enough sense of color to serve as a placeholder until the full texture is available.

The "simple" image is always 4 components, 1 byte each, regardless of the parameters of the full texture. The simple image is only supported for ordinary 2-d textures.

Also see generate_simple_ram_image(), modify_simple_ram_image(), and new_simple_ram_image().

Definition at line 1770 of file texture.I.

◆ set_size_padded()

void Texture::set_size_padded ( int x = 1,
int y = 1,
int z = 1 )

Changes the size of the texture, padding if necessary, and setting the pad region as well.

Definition at line 1931 of file texture.cxx.

References up_to_power_2().

Referenced by GraphicsOutput::add_render_texture(), and DXGraphicsStateGuardian9::framebuffer_copy_to_texture().

◆ set_textures_power_2()

void Texture::set_textures_power_2 ( AutoTextureScale scale)
inlinestatic

Set this flag to ATS_none, ATS_up, ATS_down, or ATS_pad to control the scaling of textures in general, if a particular texture does not override this.

See also set_auto_texture_scale() for the per-texture override.

Definition at line 1852 of file texture.I.

◆ setup_1d_texture() [1/2]

void Texture::setup_1d_texture ( )
inline

Sets the texture as an empty 1-d texture with no dimensions.

Follow up with read() or load() to fill the texture properties and image data, or use set_clear_color to let the texture be cleared to a solid color.

Definition at line 66 of file texture.I.

References setup_1d_texture().

Referenced by setup_1d_texture().

◆ setup_1d_texture() [2/2]

void Texture::setup_1d_texture ( int x_size,
ComponentType component_type,
Format format )
inline

Sets the texture as an empty 1-d texture with the specified dimensions and properties.

Follow up with set_ram_image() or modify_ram_image() to fill the image data, or use set_clear_color to let the texture be cleared to a solid color.

Definition at line 77 of file texture.I.

References setup_texture().

◆ setup_2d_texture() [1/2]

void Texture::setup_2d_texture ( )
inline

Sets the texture as an empty 2-d texture with no dimensions.

Follow up with read() or load() to fill the texture properties and image data, or use set_clear_color to let the texture be cleared to a solid color.

Definition at line 87 of file texture.I.

References setup_2d_texture().

Referenced by setup_2d_texture().

◆ setup_2d_texture() [2/2]

void Texture::setup_2d_texture ( int x_size,
int y_size,
ComponentType component_type,
Format format )
inline

Sets the texture as an empty 2-d texture with the specified dimensions and properties.

Follow up with set_ram_image() or modify_ram_image() to fill the image data, or use set_clear_color to let the texture be cleared to a solid color.

Definition at line 98 of file texture.I.

References setup_texture().

◆ setup_2d_texture_array() [1/2]

void Texture::setup_2d_texture_array ( int x_size,
int y_size,
int z_size,
ComponentType component_type,
Format format )
inline

Sets the texture as an empty 2-d texture array with the specified dimensions and properties.

Follow up with set_ram_image() or modify_ram_image() to fill the image data, or use set_clear_color to let the texture be cleared to a solid color.

Definition at line 144 of file texture.I.

References setup_texture().

◆ setup_2d_texture_array() [2/2]

void Texture::setup_2d_texture_array ( int z_size = 1)
inline

Sets the texture as an empty 2-d texture array with no dimensions (though if you know the depth ahead of time, it saves a bit of reallocation later).

Follow up with read() or load() to fill the texture properties and image data, or use set_clear_color to let the texture be cleared to a solid color.

Definition at line 133 of file texture.I.

References setup_2d_texture_array().

Referenced by setup_2d_texture_array().

◆ setup_3d_texture() [1/2]

void Texture::setup_3d_texture ( int x_size,
int y_size,
int z_size,
ComponentType component_type,
Format format )
inline

Sets the texture as an empty 3-d texture with the specified dimensions and properties.

Follow up with set_ram_image() or modify_ram_image() to fill the image data.

Definition at line 120 of file texture.I.

References setup_texture().

◆ setup_3d_texture() [2/2]

void Texture::setup_3d_texture ( int z_size = 1)
inline

Sets the texture as an empty 3-d texture with no dimensions (though if you know the depth ahead of time, it saves a bit of reallocation later).

Follow up with read() or load() to fill the texture properties and image data, or use set_clear_color to let the texture be cleared to a solid color.

Definition at line 110 of file texture.I.

References setup_3d_texture().

Referenced by setup_3d_texture().

◆ setup_buffer_texture()

void Texture::setup_buffer_texture ( int size,
ComponentType component_type,
Format format,
GeomEnums::UsageHint usage )
inline

Sets the texture as an empty buffer texture with the specified size and properties.

Follow up with set_ram_image() or modify_ram_image() to fill the image data, or use set_clear_color to let the texture be cleared to a solid color.

Note that a buffer texture's format needs to match the component type.

Definition at line 211 of file texture.I.

References setup_texture().

◆ setup_cube_map() [1/2]

void Texture::setup_cube_map ( )
inline

Sets the texture as an empty cube map texture with no dimensions.

Follow up with read() or load() to fill the texture properties and image data, or use set_clear_color to let the texture be cleared to a solid color.

Definition at line 155 of file texture.I.

References setup_cube_map().

Referenced by GraphicsOutput::make_cube_map(), and setup_cube_map().

◆ setup_cube_map() [2/2]

void Texture::setup_cube_map ( int size,
ComponentType component_type,
Format format )
inline

Sets the texture as an empty cube map texture with the specified dimensions and properties.

Follow up with set_ram_image() or modify_ram_image() to fill the image data, or use set_clear_color to let the texture be cleared to a solid color.

Note that a cube map should always consist of six square images, so x_size and y_size will be the same, and z_size is always 6.

Definition at line 169 of file texture.I.

References setup_texture().

◆ setup_cube_map_array() [1/2]

void Texture::setup_cube_map_array ( int num_cube_maps)
inline

Sets the texture as cube map array with N cube maps.

Note that this number is not the same as the z_size. Follow up with read() or load() to fill the texture properties and image data, or use set_clear_color to let the texture be cleared to a solid color.

Since
1.10.0

Definition at line 182 of file texture.I.

References setup_cube_map_array().

Referenced by setup_cube_map_array().

◆ setup_cube_map_array() [2/2]

void Texture::setup_cube_map_array ( int size,
int num_cube_maps,
ComponentType component_type,
Format format )
inline

Sets the texture as cube map array with N cube maps with the specified dimensions and format.

Follow up with set_ram_image() or modify_ram_image() to fill the image data, or use set_clear_color to let the texture be cleared to a solid color.

The num_cube_maps given here is multiplied by six to become the z_size of the image.

Since
1.10.0

Definition at line 198 of file texture.I.

References setup_texture().

◆ setup_texture()

void Texture::setup_texture ( Texture::TextureType texture_type,
int x_size,
int y_size,
int z_size,
Texture::ComponentType component_type,
Texture::Format format )
inline

Sets the texture to the indicated type and dimensions, presumably in preparation for calling read() or load(), or set_ram_image() or modify_ram_image(), or use set_clear_color to let the texture be cleared to a solid color.

Definition at line 52 of file texture.I.

Referenced by DXGraphicsStateGuardian9::do_framebuffer_copy_to_ram(), setup_1d_texture(), setup_2d_texture(), setup_2d_texture_array(), setup_3d_texture(), setup_buffer_texture(), setup_cube_map(), setup_cube_map_array(), and MovieVideoCursor::setup_texture().

◆ store() [1/4]

bool Texture::store ( PfmFile & pfm) const
inline

Saves the texture to the indicated PfmFile, but does not write it to disk.

Definition at line 450 of file texture.I.

◆ store() [2/4]

bool Texture::store ( PfmFile & pfm,
int z,
int n ) const
inline

Saves the indicated page and mipmap level of the texture to the PfmFile.

Definition at line 459 of file texture.I.

◆ store() [3/4]

bool Texture::store ( PNMImage & pnmimage) const
inline

Saves the texture to the indicated PNMImage, but does not write it to disk.

Definition at line 432 of file texture.I.

Referenced by PT().

◆ store() [4/4]

bool Texture::store ( PNMImage & pnmimage,
int z,
int n ) const
inline

Saves the indicated page and mipmap level of the texture to the PNMImage.

Definition at line 441 of file texture.I.

◆ string_component_type()

Texture::ComponentType Texture::string_component_type ( const std::string & str)
static

Returns the ComponentType corresponding to the indicated string word.

Definition at line 2157 of file texture.cxx.

◆ string_compression_mode()

Texture::CompressionMode Texture::string_compression_mode ( const std::string & str)
static

Returns the CompressionMode value associated with the given string representation.

Definition at line 2461 of file texture.cxx.

◆ string_format()

Texture::Format Texture::string_format ( const std::string & str)
static

Returns the Format corresponding to the indicated string word.

Definition at line 2301 of file texture.cxx.

◆ string_quality_level()

Texture::QualityLevel Texture::string_quality_level ( const std::string & str)
static

Returns the QualityLevel value associated with the given string representation.

Definition at line 2524 of file texture.cxx.

◆ string_texture_type()

Texture::TextureType Texture::string_texture_type ( const std::string & str)
static

Returns the TextureType corresponding to the indicated string word.

Definition at line 2102 of file texture.cxx.

◆ texture_uploaded()

void Texture::texture_uploaded ( )

This method is called by the GraphicsEngine at the beginning of the frame *after* a texture has been successfully uploaded to graphics memory.

It is intended as a callback so the texture can release its RAM image, if _keep_ram_image is false.

This is called indirectly when the GSG calls GraphicsEngine::texture_uploaded().

Definition at line 2550 of file texture.cxx.

◆ uncompress_ram_image()

bool Texture::uncompress_ram_image ( )
inline

Attempts to uncompress the texture's RAM image internally.

In order for this to work, the squish library must have been compiled into Panda, and the ram image must be compressed in a format supported by squish.

Returns true if successful, false otherwise.

Definition at line 1498 of file texture.I.

◆ up_to_power_2()

int Texture::up_to_power_2 ( int value)
static

Returns the smallest power of 2 greater than or equal to value.

Definition at line 2007 of file texture.cxx.

References get_next_higher_bit().

Referenced by adjust_size(), PT(), and set_size_padded().

◆ uses_mipmaps()

bool Texture::uses_mipmaps ( ) const
inline

Returns true if the minfilter settings on this texture indicate the use of mipmapping, false otherwise.

Definition at line 1127 of file texture.I.

References get_effective_minfilter, and SamplerState::is_mipmap().

Referenced by estimate_texture_memory(), load(), and load().

◆ was_image_modified()

bool Texture::was_image_modified ( PreparedGraphicsObjects * prepared_objects) const

Returns true if the texture needs to be re-loaded onto the indicated GSG, either because its image data is out-of-date, or because it's not fully prepared now.

Definition at line 1459 of file texture.cxx.

References TextureContext::was_image_modified().

◆ write() [1/3]

bool Texture::write ( const Filename & fullpath)
inline

Writes the texture to the named filename.

Definition at line 298 of file texture.I.

◆ write() [2/3]

bool Texture::write ( const Filename & fullpath,
int z,
int n,
bool write_pages,
bool write_mipmaps )
inline

Writes a single page or mipmap level to a single file, or automatically writes a series of pages and/or mipmap levels to a numbered series of files.

If the filename ends in the extension .txo, this implicitly writes a Panda texture object (.txo) instead of an image file. In this case, the remaining parameters are ignored, and only one file is written, which will contain all of the pages and resident mipmap levels in the texture.

If write_pages is false, then z indicates the page number to write. 3-D textures have one page number for each level of depth; cube maps have six pages number 0 through 5. Other kinds of textures have only one page, numbered 0. If there are multiple views, the range of z is increased; the total range is [0, get_num_pages()).

If write_pages is true, then all pages of the texture will be written. In this case z is ignored, and the filename should contain a sequence of hash marks ("#") which will be filled in with the page index number.

If write_mipmaps is false, then n indicates the mipmap level number to write. Normally, this is 0, for the base texture image. Normally, the mipmap levels of a texture are not available in RAM (they are generated automatically by the graphics card). However, if you have the mipmap levels available, for instance because you called generate_ram_mipmap_images() to generate them internally, or you called GraphicsEngine::extract_texture_data() to retrieve them from the graphics card, then you may write out each mipmap level with this parameter.

If write_mipmaps is true, then all mipmap levels of the texture will be written. In this case n is ignored, and the filename should contain a sequence of hash marks ("#") which will be filled in with the mipmap level number.

If both write_pages and write_mipmaps is true, then all pages and all mipmap levels will be written. In this case, the filename should contain two different sequences of hash marks, separated by a character such as a hyphen, underscore, or dot. The first hash mark sequence will be filled in with the mipmap level, while the second hash mark sequence will be the page index.

Definition at line 347 of file texture.I.

◆ write() [3/3]

void Texture::write ( std::ostream & out,
int indent_level ) const

Not to be confused with write(Filename), this method simply describes the texture properties.

Definition at line 1631 of file texture.cxx.

References indent().

◆ write_datagram()

void Texture::write_datagram ( BamWriter * manager,
Datagram & me )
virtual

Function to write the important information in the particular object to a Datagram.

Reimplemented from TypedWritable.

Definition at line 10008 of file texture.cxx.

◆ write_txo()

bool Texture::write_txo ( std::ostream & out,
const std::string & filename = "" ) const
static

Writes the texture to a Panda texture object.

This defines the complete Texture specification, including the image data as well as all texture properties.

The filename is just for reference.

Definition at line 927 of file texture.cxx.

Friends And Related Symbol Documentation

◆ Extension< Texture >

friend class Extension< Texture >
friend

Definition at line 1114 of file texture.h.

◆ PreparedGraphicsObjects

friend class PreparedGraphicsObjects
friend

Definition at line 1118 of file texture.h.

◆ TextureContext

friend class TextureContext
friend

Definition at line 1117 of file texture.h.

◆ TexturePeeker

friend class TexturePeeker
friend

Definition at line 1120 of file texture.h.

◆ TexturePool

friend class TexturePool
friend

Definition at line 1119 of file texture.h.

Member Data Documentation

◆ clear_alpha_filename

void Texture::clear_alpha_filename
inline

Removes the alpha filename, if it was previously set.

See set_alpha_filename().

Definition at line 327 of file texture.h.

◆ clear_alpha_fullpath

void Texture::clear_alpha_fullpath
inline

Removes the alpha fullpath, if it was previously set.

See set_alpha_fullpath().

Definition at line 339 of file texture.h.

◆ clear_aux_data

void Texture::clear_aux_data

Removes a record previously recorded via set_aux_data().

Definition at line 555 of file texture.h.

◆ clear_clear_color

void Texture::clear_clear_color
inline

The opposite of set_clear_color.

If the image is cleared after setting this, its contents may be undefined (or may in fact not be cleared at all).

Definition at line 279 of file texture.h.

◆ clear_filename

void Texture::clear_filename
inline

Removes the alpha filename, if it was previously set.

See set_filename().

Definition at line 321 of file texture.h.

◆ clear_fullpath

void Texture::clear_fullpath
inline

Removes the alpha fullpath, if it was previously set.

See set_fullpath().

Definition at line 333 of file texture.h.

◆ get_alpha_filename

const Filename & Texture::get_alpha_filename
inline

Returns the alpha_filename that has been set.

If this is set, it represents the name of the alpha component, which is stored in a separate file. See also get_filename(), and get_alpha_fullpath().

Definition at line 327 of file texture.h.

◆ get_alpha_fullpath

const Filename & Texture::get_alpha_fullpath
inline

Returns the alpha_fullpath that has been set.

This is the full path to the alpha part of the image file as it was found along the texture search path.

Definition at line 339 of file texture.h.

Referenced by PT().

◆ get_anisotropic_degree

int Texture::get_anisotropic_degree
inline

Returns the degree of anisotropic filtering that should be applied to the texture.

This value may return 0, indicating the default value; see also get_effective_anisotropic_degree.

This returns the default sampler state for this texture; it may still be overridden by a sampler state specified at a higher level.

Definition at line 404 of file texture.h.

Referenced by DXTextureContext9::create_texture(), and MultitexReducer::flatten().

◆ get_auto_texture_scale

AutoTextureScale Texture::get_auto_texture_scale
inline

Returns the power-of-2 texture-scaling mode that will be applied to this particular texture when it is next loaded from disk.

See set_textures_power_2().

Definition at line 535 of file texture.h.

Referenced by consider_rescale().

◆ get_aux_data

TypedReferenceCount * Texture::get_aux_data

Returns a record previously recorded via set_aux_data().

Returns NULL if there was no record associated with the indicated key.

Definition at line 555 of file texture.h.

◆ get_border_color

LColor Texture::get_border_color
inline

Returns the solid color of the texture's border.

Some OpenGL implementations use a border for tiling textures; in Panda, it is only used for specifying the clamp color.

This returns the default sampler state for this texture; it may still be overridden by a sampler state specified at a higher level.

Definition at line 409 of file texture.h.

◆ get_clear_color

LColor Texture::get_clear_color
inline

Returns the color that was previously set using set_clear_color.

Definition at line 279 of file texture.h.

◆ get_component_type

Texture::ComponentType Texture::get_component_type
inline

Returns the numeric interpretation of each component of the texture.

Definition at line 375 of file texture.h.

Referenced by DXTextureContext9::d3d_surface_to_texture(), and DXGraphicsStateGuardian9::do_framebuffer_copy_to_ram().

◆ get_component_width

int Texture::get_component_width
inline

Returns the number of bytes stored for each color component of a texel.

Typically this is 1, but it may be 2 for 16-bit texels.

Definition at line 365 of file texture.h.

Referenced by MovieVideoCursor::apply_to_texture(), MovieVideoCursor::apply_to_texture_alpha(), MovieVideoCursor::apply_to_texture_rgb(), DXTextureContext9::d3d_surface_to_texture(), and DXTextureContext9::extract_texture_data().

◆ get_compression

Texture::CompressionMode Texture::get_compression
inline

Returns the compression mode requested for this particular texture, or CM_off if the texture is not to be compressed.

If a value other than CM_off is returned, this is not a guarantee that the texture is actually successfully compressed on the GSG. It may be that the GSG does not support the requested compression mode, in which case the texture may actually be stored uncompressed in texture memory.

Definition at line 414 of file texture.h.

Referenced by DXTextureContext9::create_texture().

◆ get_default_sampler

const SamplerState & Texture::get_default_sampler
inline

This returns the default sampler state for this texture, containing the wrap and filter properties specified on the texture level; it may still be overridden by a sampler state specified at a higher level.

Definition at line 422 of file texture.h.

Referenced by ShaderInput::get_sampler().

◆ get_effective_anisotropic_degree

int Texture::get_effective_anisotropic_degree
inline

Returns the degree of anisotropic filtering that should be applied to the texture.

This value will normally not return 0, unless there is an error in the config file.

This returns the default sampler state for this texture; it may still be overridden by a sampler state specified at a higher level.

Definition at line 405 of file texture.h.

◆ get_effective_magfilter

SamplerState::FilterType Texture::get_effective_magfilter

Returns the filter mode of the texture for magnification, with special treatment for FT_default.

This will normally not return FT_default, unless there is an error in the config file.

This returns the default sampler state for this texture; it may still be overridden by a sampler state specified at a higher level.

Definition at line 399 of file texture.h.

◆ get_effective_minfilter

SamplerState::FilterType Texture::get_effective_minfilter

Returns the filter mode of the texture for minification, with special treatment for FT_default.

This will normally not return FT_default, unless there is an error in the config file.

This returns the default sampler state for this texture; it may still be overridden by a sampler state specified at a higher level.

Definition at line 393 of file texture.h.

Referenced by uses_mipmaps().

◆ get_effective_quality_level

Texture::QualityLevel Texture::get_effective_quality_level
inline

Returns the current quality_level hint, or the global default quality_level if this texture doesn't specify a quality level.

This value will not normally return QL_default (unless there is an error in the config file)

Definition at line 429 of file texture.h.

◆ get_expected_num_mipmap_levels

int Texture::get_expected_num_mipmap_levels
inline

Returns the number of mipmap levels that should be defined for this texture, given the texture's size.

Note that this returns a number appropriate for mipmapping, even if the texture does not currently have mipmapping enabled.

Definition at line 436 of file texture.h.

◆ get_expected_ram_image_size

size_t Texture::get_expected_ram_image_size
inline

Returns the number of bytes that *ought* to be used by the in-memory image, based on the texture parameters.

Definition at line 449 of file texture.h.

◆ get_expected_ram_page_size

size_t Texture::get_expected_ram_page_size
inline

Returns the number of bytes that should be used per each Z page of the 3-d texture.

For a 2-d or 1-d texture, this is the same as get_expected_ram_image_size().

Definition at line 450 of file texture.h.

Referenced by MovieVideoCursor::apply_to_texture(), MovieVideoCursor::apply_to_texture_alpha(), MovieVideoCursor::apply_to_texture_rgb(), and DXTextureContext9::d3d_surface_to_texture().

◆ get_filename

const Filename & Texture::get_filename
inline

Returns the filename that has been set.

This is the name of the file as it was requested. Also see get_fullpath().

Definition at line 321 of file texture.h.

Referenced by SpriteParticleRenderer::add_texture(), PT(), and SpriteParticleRenderer::set_texture().

◆ get_format

Texture::Format Texture::get_format
inline

Returns the format of the texture, which represents both the semantic meaning of the texels and, to some extent, their storage information.

Definition at line 371 of file texture.h.

Referenced by GraphicsOutput::add_render_texture(), DXGraphicsStateGuardian9::apply_texture(), DXTextureContext9::create_texture(), DXGraphicsStateGuardian9::do_framebuffer_copy_to_ram(), EggRenderState::fill_state(), GraphicsOutput::get_texture_card(), and wdxGraphicsBuffer9::select_target_tex_page().

◆ get_fullpath

const Filename & Texture::get_fullpath
inline

Returns the fullpath that has been set.

This is the full path to the file as it was found along the texture search path.

Definition at line 333 of file texture.h.

Referenced by DXTextureContext9::create_texture(), and PT().

◆ get_image_modified

UpdateSeq Texture::get_image_modified
inline

Returns a sequence number which is guaranteed to change at least every time the texture image data (including mipmap levels) are modified.

Definition at line 528 of file texture.h.

Referenced by TextureContext::mark_loaded(), GraphicsEngine::texture_uploaded(), and TextureContext::was_image_modified().

◆ get_keep_ram_image

bool Texture::get_keep_ram_image

Returns the flag that indicates whether this Texture is eligible to have its main RAM copy of the texture memory dumped when the texture is prepared for rendering.

See set_keep_ram_image().

Definition at line 473 of file texture.h.

◆ get_loaded_from_image

bool Texture::get_loaded_from_image
inline

Returns the flag that indicates the texture has been loaded from a disk file or PNMImage.

See set_loaded_from_image().

Definition at line 583 of file texture.h.

◆ get_loaded_from_txo

bool Texture::get_loaded_from_txo
inline

Returns the flag that indicates the texture has been loaded from a txo file.

Definition at line 587 of file texture.h.

◆ get_magfilter

SamplerState::FilterType Texture::get_magfilter
inline

Returns the filter mode of the texture for magnification.

The mipmap constants are invalid here. This may return FT_default; see also get_effective_minfilter().

This returns the default sampler state for this texture; it may still be overridden by a sampler state specified at a higher level.

Definition at line 398 of file texture.h.

Referenced by StaticTextFont::StaticTextFont(), DXTextureContext9::create_texture(), and MultitexReducer::flatten().

◆ get_match_framebuffer_format

bool Texture::get_match_framebuffer_format
inline

Returns true if the special flag was set that indicates to the GSG that the Texture's format should be chosen to exactly match the framebuffer's format, presumably because the application intends to copy image data from the framebuffer into the Texture (or vice-versa).

Definition at line 592 of file texture.h.

Referenced by DXTextureContext9::create_texture().

◆ get_minfilter

SamplerState::FilterType Texture::get_minfilter
inline

Returns the filter mode of the texture for minification.

If this is one of the mipmap constants, then the texture requires mipmaps. This may return FT_default; see also get_effective_minfilter().

This returns the default sampler state for this texture; it may still be overridden by a sampler state specified at a higher level.

Definition at line 392 of file texture.h.

Referenced by StaticTextFont::StaticTextFont(), DXTextureContext9::create_texture(), and MultitexReducer::flatten().

◆ get_num_components

int Texture::get_num_components
inline

Returns the number of color components for each texel of the texture image.

This is 3 for an rgb texture or 4 for an rgba texture; it may also be 1 or 2 for a grayscale texture.

Definition at line 364 of file texture.h.

Referenced by MovieVideoCursor::apply_to_texture(), MovieVideoCursor::apply_to_texture_alpha(), MovieVideoCursor::apply_to_texture_rgb(), DXTextureContext9::create_texture(), DXTextureContext9::d3d_surface_to_texture(), DXTextureContext9::extract_texture_data(), and EggRenderState::fill_state().

◆ get_num_loadable_ram_mipmap_images

int Texture::get_num_loadable_ram_mipmap_images

Returns the number of contiguous mipmap levels that exist in RAM, up until the first gap in the sequence.

It is guaranteed that at least mipmap levels [0, get_num_ram_mipmap_images()) exist.

The number returned will never exceed the number of required mipmap images based on the size of the texture and its filter mode.

This method is different from get_num_ram_mipmap_images() in that it returns only the number of mipmap levels that can actually be usefully loaded, regardless of the actual number that may be stored.

Definition at line 505 of file texture.h.

Referenced by DXTextureContext9::create_texture().

◆ get_num_pages

int Texture::get_num_pages
inline

Returns the total number of pages in the texture.

Each "page" is a 2-d texture image within the larger image–a face of a cube map, or a level of a 3-d texture. Normally, get_num_pages() is the same as get_z_size(). However, in a multiview texture, this returns get_z_size() * get_num_views().

Definition at line 363 of file texture.h.

◆ get_num_ram_mipmap_images

int Texture::get_num_ram_mipmap_images
inline

Returns the maximum number of mipmap level images available in system memory.

The actual number may be less than this (that is, there might be gaps in the sequence); use has_ram_mipmap_image() to verify each level.

Also see get_num_loadable_ram_mipmap_images().

Definition at line 504 of file texture.h.

Referenced by DXTextureContext9::create_texture().

◆ get_num_views

int Texture::get_num_views
inline

Returns the number of "views" in the texture.

A view is a completely separate image stored within the Texture object. Most textures have only one view, but a stereo texture, for instance, may have two views, a left and a right image. Other uses for multiple views are not yet defined.

If this value is greater than one, the additional views are accessed as additional pages beyond get_z_size().

Definition at line 355 of file texture.h.

Referenced by GraphicsOutput::add_render_texture(), PreparedGraphicsObjects::begin_frame(), and DXGraphicsStateGuardian9::extract_texture_data().

◆ get_orig_file_x_size

int Texture::get_orig_file_x_size
inline

Returns the X size of the original disk image that this Texture was loaded from (if it came from a disk file), before any automatic rescaling by Panda.

Definition at line 575 of file texture.h.

◆ get_orig_file_y_size

int Texture::get_orig_file_y_size
inline

Returns the Y size of the original disk image that this Texture was loaded from (if it came from a disk file), before any automatic rescaling by Panda.

Definition at line 576 of file texture.h.

◆ get_orig_file_z_size

int Texture::get_orig_file_z_size
inline

Returns the Z size of the original disk image that this Texture was loaded from (if it came from a disk file), before any automatic rescaling by Panda.

Definition at line 577 of file texture.h.

◆ get_post_load_store_cache

bool Texture::get_post_load_store_cache
inline

Returns the setting of the post_load_store_cache flag.

See set_post_load_store_cache().

Definition at line 597 of file texture.h.

Referenced by DXTextureContext9::create_texture().

◆ get_properties_modified

UpdateSeq Texture::get_properties_modified
inline

Returns a sequence number which is guaranteed to change at least every time the texture properties (unrelated to the image) are modified.

Definition at line 527 of file texture.h.

Referenced by TextureContext::mark_loaded(), TextureContext::mark_simple_loaded(), and TextureContext::was_properties_modified().

◆ get_quality_level

Texture::QualityLevel Texture::get_quality_level
inline

Returns the current quality_level hint.

See set_quality_level(). This value may return QL_default; see get_effective_quality_level().

Definition at line 428 of file texture.h.

Referenced by StaticTextFont::StaticTextFont().

◆ get_ram_image_compression

Texture::CompressionMode Texture::get_ram_image_compression
inline

Returns the compression mode in which the ram image is already stored pre- compressed.

If this is other than CM_off, you cannot rely on the contents of the ram image to be anything predicatable (it will not be an array of x by y pixels, and it probably won't have the same length as get_expected_ram_image_size()).

Definition at line 472 of file texture.h.

Referenced by DXTextureContext9::create_texture(), DXGraphicsStateGuardian9::prepare_texture(), and DXGraphicsStateGuardian9::upload_texture().

◆ get_ram_image_size

size_t Texture::get_ram_image_size
inline

Returns the total number of bytes used by the in-memory image, across all pages and views, or 0 if there is no in-memory image.

Definition at line 446 of file texture.h.

◆ get_ram_page_size

size_t Texture::get_ram_page_size
inline

Returns the number of bytes used by the in-memory image per page, or 0 if there is no in-memory image.

For a non-compressed texture, this is the same as get_expected_ram_page_size(). For a compressed texture, this may be a smaller value. (We do assume that all pages will be the same size on a compressed texture).

Definition at line 448 of file texture.h.

◆ get_ram_view_size

size_t Texture::get_ram_view_size
inline

Returns the number of bytes used by the in-memory image per view, or 0 if there is no in-memory image.

Since each view is a stack of z_size pages, this is get_z_size() * get_ram_page_size().

Definition at line 447 of file texture.h.

◆ get_render_to_texture

bool Texture::get_render_to_texture
inline

Returns a flag on the texture that indicates whether the texture is intended to be used as a direct-render target, by binding a framebuffer to a texture and rendering directly into the texture.

Normally, a user should not need to set this flag directly; it is set automatically by the low-level display code when a texture is bound to a framebuffer.

Definition at line 418 of file texture.h.

Referenced by DXTextureContext9::create_texture().

◆ get_simple_image_modified

UpdateSeq Texture::get_simple_image_modified
inline

Returns a sequence number which is guaranteed to change at least every time the texture's "simple" image data is modified.

Definition at line 529 of file texture.h.

Referenced by TextureContext::mark_simple_loaded(), and TextureContext::was_simple_image_modified().

◆ get_simple_ram_image

CPTA_uchar Texture::get_simple_ram_image
inline

Returns the image data associated with the "simple" texture image.

This is provided for some textures as an option to display while the main texture image is being loaded from disk.

Unlike get_ram_image(), this function will always return immediately. Either the simple image is available, or it is not.

The "simple" image is always 4 components, 1 byte each, regardless of the parameters of the full texture. The simple image is only supported for ordinary 2-d textures.

Definition at line 520 of file texture.h.

◆ get_simple_x_size

int Texture::get_simple_x_size
inline

Returns the width of the "simple" image in texels.

Definition at line 518 of file texture.h.

◆ get_simple_y_size

int Texture::get_simple_y_size
inline

Returns the height of the "simple" image in texels.

Definition at line 519 of file texture.h.

◆ get_texture_type

Texture::TextureType Texture::get_texture_type
inline

◆ get_usage_hint

GeomEnums::UsageHint Texture::get_usage_hint
inline

Returns the usage hint specified for buffer textures, or UH_unspecified for all other texture types.

Definition at line 367 of file texture.h.

◆ get_wrap_u

SamplerState::WrapMode Texture::get_wrap_u
inline

Returns the wrap mode of the texture in the U direction.

This returns the default sampler state for this texture; it may still be overridden by a sampler state specified at a higher level.

Definition at line 379 of file texture.h.

◆ get_wrap_v

SamplerState::WrapMode Texture::get_wrap_v
inline

Returns the wrap mode of the texture in the V direction.

This returns the default sampler state for this texture; it may still be overridden by a sampler state specified at a higher level.

Definition at line 383 of file texture.h.

◆ get_wrap_w

SamplerState::WrapMode Texture::get_wrap_w
inline

Returns the wrap mode of the texture in the W direction.

This is the depth direction of 3-d textures.

This returns the default sampler state for this texture; it may still be overridden by a sampler state specified at a higher level.

Definition at line 387 of file texture.h.

◆ get_x_size

int Texture::get_x_size
inline

◆ get_y_size

int Texture::get_y_size
inline

◆ get_z_size

int Texture::get_z_size
inline

Returns the depth of the texture image in texels.

For a 1-d texture or 2-d texture, this will be 1. For a cube map texture, this will be 6.

Definition at line 351 of file texture.h.

Referenced by GraphicsOutput::add_render_texture(), DXTextureContext9::create_texture(), DXTextureContext9::d3d_surface_to_texture(), DXGraphicsStateGuardian9::do_framebuffer_copy_to_ram(), and GraphicsStateGuardian::fetch_specified_part().

◆ has_alpha_filename

bool Texture::has_alpha_filename
inline

Returns true if the alpha_filename has been set and is available.

See set_alpha_filename().

Definition at line 327 of file texture.h.

◆ has_alpha_fullpath

bool Texture::has_alpha_fullpath
inline

Returns true if the alpha_fullpath has been set and is available.

See set_alpha_fullpath().

Definition at line 339 of file texture.h.

◆ has_clear_color

bool Texture::has_clear_color
inline

Returns true if a color was previously set using set_clear_color.

Definition at line 279 of file texture.h.

◆ has_filename

bool Texture::has_filename
inline

Returns true if the filename has been set and is available.

See set_filename().

Definition at line 321 of file texture.h.

◆ has_fullpath

bool Texture::has_fullpath
inline

Returns true if the fullpath has been set and is available.

See set_fullpath().

Definition at line 333 of file texture.h.

◆ has_simple_ram_image

bool Texture::has_simple_ram_image
inline

Returns true if the Texture has a "simple" image available in main RAM.

Definition at line 520 of file texture.h.

Referenced by DXGraphicsStateGuardian9::upload_texture().

◆ is_cacheable

bool Texture::is_cacheable

Returns true if there is enough information in this Texture object to write it to the bam cache successfully, false otherwise.

For most textures, this is the same as has_ram_image().

Definition at line 474 of file texture.h.

◆ set_alpha_filename

void Texture::set_alpha_filename
inline

Sets the name of the file that contains the image's alpha channel contents.

Normally, this is set automatically when the image is loaded, for instance via Texture::read().

The Texture's get_filename() function returns the name of the image file that was loaded into the buffer. In the case where a texture specified two separate files to load, a 1- or 3-channel color image and a 1-channel alpha image, this Filename is update to contain the name of the image file that was loaded into the buffer's alpha channel.

Definition at line 327 of file texture.h.

◆ set_alpha_fullpath

void Texture::set_alpha_fullpath
inline

Sets the full pathname to the file that contains the image's alpha channel contents, as found along the search path.

Normally, this is set automatically when the image is loaded, for instance via Texture::read().

Definition at line 339 of file texture.h.

◆ set_anisotropic_degree

void Texture::set_anisotropic_degree
inline

Specifies the level of anisotropic filtering to apply to the texture.

Set this 0 to indicate the default value, which is specified in the texture- anisotropic-degree config variable.

To explicitly disable anisotropic filtering, set this value to 1. To explicitly enable anisotropic filtering, set it to a value higher than 1; larger numbers indicate greater degrees of filtering.

This sets the default sampler state for this texture; it may still be overridden by a sampler state specified at a higher level.

Definition at line 404 of file texture.h.

Referenced by DXTextureContext9::create_texture(), and MultitexReducer::flatten().

◆ set_auto_texture_scale

void Texture::set_auto_texture_scale
inline

Specifies the power-of-2 texture-scaling mode that will be applied to this particular texture when it is next loaded from disk.

See set_textures_power_2().

Definition at line 535 of file texture.h.

◆ set_aux_data

void Texture::set_aux_data

Records an arbitrary object in the Texture, associated with a specified key.

The object may later be retrieved by calling get_aux_data() with the same key.

These data objects are not recorded to a bam or txo file.

Definition at line 555 of file texture.h.

Referenced by PT().

◆ set_border_color

void Texture::set_border_color
inline

Specifies the solid color of the texture's border.

Some OpenGL implementations use a border for tiling textures; in Panda, it is only used for specifying the clamp color.

This sets the default sampler state for this texture; it may still be overridden by a sampler state specified at a higher level.

Definition at line 409 of file texture.h.

◆ set_clear_color

void Texture::set_clear_color
inline

Sets the color that will be used to fill the texture image in absence of any image data.

It is used when any of the setup_texture functions or clear_image is called and image data is not provided using read() or modify_ram_image().

This does not affect a texture that has already been cleared; call clear_image to clear it again.

Definition at line 279 of file texture.h.

◆ set_component_type

void Texture::set_component_type
inline

Changes the data value for the texture components.

This implicitly sets component_width as well.

Definition at line 375 of file texture.h.

Referenced by GraphicsOutput::add_render_texture(), DXTextureContext9::extract_texture_data(), FrameBufferProperties::setup_color_texture(), and FrameBufferProperties::setup_depth_texture().

◆ set_compression

void Texture::set_compression
inline

Requests that this particular Texture be compressed when it is loaded into texture memory.

This refers to the internal compression of the texture image within texture memory; it is not related to jpeg or png compression, which are disk file compression formats. The actual disk file that generated this texture may be stored in a compressed or uncompressed format supported by Panda; it will be decompressed on load, and then recompressed by the graphics API if this parameter is not CM_off.

If the GSG does not support this texture compression mode, the texture will silently be loaded uncompressed.

Definition at line 414 of file texture.h.

Referenced by StaticTextFont::StaticTextFont(), and GraphicsOutput::add_render_texture().

◆ set_default_sampler

void Texture::set_default_sampler
inline

This sets the default sampler state for this texture, containing the wrap and filter properties specified on the texture level; it may still be overridden by a sampler state specified at a higher level.

This encompasses the settings for get_wrap_u, get_minfilter, get_anisotropic_degree, etc.

This makes a copy of the SamplerState object, so future modifications of the same SamplerState will have no effect on this texture unless you call set_default_sampler again.

Definition at line 422 of file texture.h.

◆ set_filename

void Texture::set_filename
inline

Sets the name of the file that contains the image's contents.

Normally, this is set automatically when the image is loaded, for instance via Texture::read().

The Texture's get_name() function used to return the filename, but now returns just the basename (without the extension), which is a more useful name for identifying an image in show code.

Definition at line 321 of file texture.h.

◆ set_format

void Texture::set_format
inline

Changes the format value for the texture components.

This implicitly sets num_components as well.

Definition at line 371 of file texture.h.

Referenced by GraphicsOutput::add_render_texture(), DXTextureContext9::extract_texture_data(), FrameBufferProperties::setup_color_texture(), and FrameBufferProperties::setup_depth_texture().

◆ set_fullpath

void Texture::set_fullpath
inline

Sets the full pathname to the file that contains the image's contents, as found along the search path.

Normally, this is set automatically when the image is loaded, for instance via Texture::read().

Definition at line 333 of file texture.h.

◆ set_keep_ram_image

void Texture::set_keep_ram_image
inline

Sets the flag that indicates whether this Texture is eligible to have its main RAM copy of the texture memory dumped when the texture is prepared for rendering.

This will be false for most textures, which can reload their images if needed by rereading the input file. However, textures that were generated dynamically and cannot be easily reloaded will want to set this flag to true, so that the texture will always keep its image copy around.

Definition at line 473 of file texture.h.

Referenced by MovieVideoCursor::apply_to_texture(), MovieVideoCursor::apply_to_texture_alpha(), and MovieVideoCursor::apply_to_texture_rgb().

◆ set_loaded_from_image

void Texture::set_loaded_from_image
inline

Sets the flag that indicates the texture has been loaded from a disk file or PNMImage.

You should also ensure the filename has been set correctly. When this flag is true, the texture may be automatically reloaded when its ram image needs to be replaced.

Definition at line 583 of file texture.h.

◆ set_loaded_from_txo

void Texture::set_loaded_from_txo
inline

Sets the flag that indicates the texture has been loaded from a txo file.

You probably shouldn't be setting this directly; it is set automatically when a Texture is loaded.

Definition at line 587 of file texture.h.

◆ set_magfilter

void Texture::set_magfilter
inline

Sets the filtering method that should be used when viewing the texture up close.

This sets the default sampler state for this texture; it may still be overridden by a sampler state specified at a higher level.

Definition at line 398 of file texture.h.

Referenced by StaticTextFont::StaticTextFont(), DXTextureContext9::create_texture(), and MultitexReducer::flatten().

◆ set_match_framebuffer_format

void Texture::set_match_framebuffer_format
inline

Sets the special flag that, if true, indicates to the GSG that the Texture's format should be chosen to exactly match the framebuffer's format, presumably because the application intends to copy image data from the framebuffer into the Texture (or vice-versa).

This sets only the graphics card's idea of the texture format; it is not related to the system-memory format.

Definition at line 592 of file texture.h.

Referenced by GraphicsOutput::add_render_texture().

◆ set_minfilter

void Texture::set_minfilter
inline

Sets the filtering method that should be used when viewing the texture from a distance.

This sets the default sampler state for this texture; it may still be overridden by a sampler state specified at a higher level.

Definition at line 392 of file texture.h.

Referenced by StaticTextFont::StaticTextFont(), DXTextureContext9::create_texture(), and MultitexReducer::flatten().

◆ set_num_views

void Texture::set_num_views
inline

Sets the number of "views" within a texture.

A view is a completely separate image stored within the Texture object. Most textures have only one view, but a stereo texture, for instance, may have two views, a left and a right image. Other uses for multiple views are not yet defined.

If this value is greater than one, the additional views are accessed as additional pages beyond get_z_size().

This also implicitly unloads the texture if it has already been loaded.

Definition at line 355 of file texture.h.

Referenced by GraphicsOutput::add_render_texture().

◆ set_post_load_store_cache

void Texture::set_post_load_store_cache
inline

Sets the post_load_store_cache flag.

When this is set, the next time the texture is loaded on a GSG, it will automatically extract its RAM image from the GSG and save it to the global BamCache.

This is used to store compressed RAM images in the BamCache. This flag should not be set explicitly; it is set automatically by the TexturePool when model-cache-compressed-textures is set true.

Definition at line 597 of file texture.h.

Referenced by DXTextureContext9::create_texture().

◆ set_quality_level

void Texture::set_quality_level
inline

Sets a hint to the renderer about the desired performance / quality tradeoff for this particular texture.

This is most useful for the tinydisplay software renderer; for normal, hardware-accelerated renderers, this may have little or no effect.

Definition at line 428 of file texture.h.

Referenced by StaticTextFont::StaticTextFont().

◆ set_render_to_texture

void Texture::set_render_to_texture
inline

Sets a flag on the texture that indicates whether the texture is intended to be used as a direct-render target, by binding a framebuffer to a texture and rendering directly into the texture.

This controls some low-level choices made about the texture object itself. For instance, compressed textures are disallowed when this flag is set true.

Normally, a user should not need to set this flag directly; it is set automatically by the low-level display code when a texture is bound to a framebuffer.

Definition at line 418 of file texture.h.

Referenced by GraphicsOutput::add_render_texture(), and DXGraphicsStateGuardian9::framebuffer_copy_to_texture().

◆ set_wrap_u

void Texture::set_wrap_u
inline

This setting determines what happens when the texture is sampled with a U value outside the range 0.0-1.0.

The default is WM_repeat, which indicates that the texture should repeat indefinitely.

This sets the default sampler state for this texture; it may still be overridden by a sampler state specified at a higher level.

Definition at line 379 of file texture.h.

Referenced by GraphicsOutput::add_render_texture(), and GraphicsOutput::make_cube_map().

◆ set_wrap_v

void Texture::set_wrap_v
inline

This setting determines what happens when the texture is sampled with a V value outside the range 0.0-1.0.

The default is WM_repeat, which indicates that the texture should repeat indefinitely.

This sets the default sampler state for this texture; it may still be overridden by a sampler state specified at a higher level.

Definition at line 383 of file texture.h.

Referenced by GraphicsOutput::add_render_texture(), and GraphicsOutput::make_cube_map().

◆ set_wrap_w

void Texture::set_wrap_w
inline

The W wrap direction is only used for 3-d textures.

This sets the default sampler state for this texture; it may still be overridden by a sampler state specified at a higher level.

Definition at line 387 of file texture.h.

◆ set_x_size

void Texture::set_x_size
inline

Changes the x size indicated for the texture.

This also implicitly unloads the texture if it has already been loaded.

Definition at line 343 of file texture.h.

Referenced by DXTextureContext9::extract_texture_data().

◆ set_y_size

void Texture::set_y_size
inline

Changes the y size indicated for the texture.

This also implicitly unloads the texture if it has already been loaded.

Definition at line 347 of file texture.h.

Referenced by DXTextureContext9::extract_texture_data().

◆ set_z_size

void Texture::set_z_size
inline

Changes the z size indicated for the texture.

This also implicitly unloads the texture if it has already been loaded.

Definition at line 351 of file texture.h.

Referenced by DXTextureContext9::extract_texture_data().


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