Panda3D
Classes | Public Types | Public Member Functions | Static Public Member Functions | Public Attributes | Static Public Attributes | Protected Types | Protected Member Functions | Static Protected Member Functions | Protected Attributes | Friends

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 TypedObject MemoryBase MemoryBase VideoTexture WebBrowserTexture

List of all members.

Classes

class  RamImage

Public Types

enum  ComponentType { T_unsigned_byte, T_unsigned_short, T_float, T_unsigned_int_24_8 }
enum  CompressionMode {
  CM_default, CM_off, CM_on, CM_fxt1,
  CM_dxt1, CM_dxt2, CM_dxt3, CM_dxt4,
  CM_dxt5
}
enum  FilterType {
  FT_nearest, FT_linear, FT_nearest_mipmap_nearest, FT_linear_mipmap_nearest,
  FT_nearest_mipmap_linear, FT_linear_mipmap_linear, FT_shadow, FT_default,
  FT_invalid
}
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
}
enum  QualityLevel { QL_default, QL_fastest, QL_normal, QL_best }
enum  TextureType { TT_1d_texture, TT_2d_texture, TT_3d_texture, TT_cube_map }
enum  WrapMode {
  WM_clamp, WM_repeat, WM_mirror, WM_mirror_once,
  WM_border_color, WM_invalid
}

Public Member Functions

 Texture (const string &name=string())
 Constructs an empty texture.
virtual ReferenceCountas_reference_count ()
 Returns the pointer cast to a ReferenceCount pointer, if it is in fact of that type.
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.
void clear ()
 Reinitializes the texture to its default, empty state (except for the name).
void clear_alpha_filename ()
 Removes the alpha filename, if it was previously set.
void clear_alpha_fullpath ()
 Removes the alpha fullpath, if it was previously set.
void clear_aux_data (const string &key)
 Removes a record previously recorded via set_aux_data().
void clear_filename ()
 Removes the alpha filename, if it was previously set.
void clear_fullpath ()
 Removes the alpha fullpath, if it was previously set.
void clear_name ()
 Resets the Namable's name to empty.
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.
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().
bool compress_ram_image (CompressionMode compression=CM_on, QualityLevel quality_level=QL_default, GraphicsStateGuardianBase *gsg=NULL)
 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.
string encode_to_bam_stream () const
 Converts the TypedWritable object into a single stream of data using a BamWriter, and returns that data as a string string.
bool encode_to_bam_stream (string &data, BamWriter *writer=NULL) const
 Converts the TypedWritable object into a single stream of data using a BamWriter, and stores that data in the indicated string.
size_t estimate_texture_memory () const
 Estimates the amount of texture memory that will be consumed by loading this texture.
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.
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
 Returns the alpha_filename that has been set.
const Filenameget_alpha_fullpath () const
 Returns the alpha_fullpath that has been set.
int get_anisotropic_degree () const
 Returns the degree of anisotropic filtering that should be applied to the texture.
TypedReferenceCountget_aux_data (const string &key) const
 Returns a record previously recorded via set_aux_data().
UpdateSeq get_bam_modified () const
 Returns the current bam_modified counter.
int get_best_parent_from_Set (const std::set< int > &) const
Colorf get_border_color () const
 Returns the solid color of the texture's border.
ComponentType get_component_type () const
 Returns the numeric interpretation of each component of the texture.
int get_component_width () const
 Returns the number of bytes stored for each color component of a texel.
CompressionMode get_compression () const
 Returns the compression mode requested for this particular texture, or CM_off if the texture is not to be compressed.
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.
int get_effective_anisotropic_degree () const
 Returns the degree of anisotropic filtering that should be applied to the texture.
FilterType get_effective_magfilter () const
 Returns the filter mode of the texture for magnification, with special treatment for FT_default.
FilterType get_effective_minfilter () const
 Returns the filter mode of the texture for minification, with special treatment for FT_default.
QualityLevel get_effective_quality_level () const
 Returns the current quality_level hint, or the global default quality_level if this texture doesn't specify a quality level.
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
 Returns the number of mipmap levels that should be defined for this texture, given the texture's size.
size_t get_expected_ram_image_size () const
 Returns the number of bytes that *ought* to be used by the in-memory image, based on the texture parameters.
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_page_size () const
 Returns the number of bytes that should be used per each Z page of the 3-d texture.
const Filenameget_filename () const
 Returns the filename that has been set.
Format get_format () const
 Returns the format of the texture, which represents both the semantic meaning of the texels and, to some extent, their storage information.
const Filenameget_fullpath () const
 Returns the fullpath that has been set.
UpdateSeq get_image_modified () const
 Returns a sequence number which is guaranteed to change at least every time the texture image data (including mipmap levels) are modified.
virtual bool get_keep_ram_image () const
 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.
bool get_loaded_from_image () const
 Returns the flag that indicates the texture has been loaded from a disk file or PNMImage.
bool get_loaded_from_txo () const
 Returns the flag that indicates the texture has been loaded from a txo file.
FilterType get_magfilter () const
 Returns the filter mode of the texture for magnification.
bool get_match_framebuffer_format () const
 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).
FilterType get_minfilter () const
 Returns the filter mode of the texture for minification.
const string & get_name () const
int get_num_components () const
 Returns the number of color components for each texel of the texture image.
int get_num_loadable_ram_mipmap_images () const
 Returns the number of contiguous mipmap levels that exist in RAM, up until the first gap in the sequence.
int get_num_ram_mipmap_images () const
 Returns the maximum number of mipmap level images available in system memory.
int get_orig_file_x_size () const
 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.
int get_orig_file_y_size () const
 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.
int get_orig_file_z_size () const
 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.
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
 Returns the setting of the post_load_store_cache flag.
UpdateSeq get_properties_modified () const
 Returns a sequence number which is guaranteed to change at least every time the texture properties (unrelated to the image) are modified.
QualityLevel get_quality_level () const
 Returns the current quality_level hint.
CPTA_uchar get_ram_image ()
 Returns the system-RAM image data associated with the texture.
CPTA_uchar get_ram_image_as (const string &requested_format)
 Returns the uncompressed system-RAM image data associated with the texture.
CompressionMode get_ram_image_compression () const
 Returns the compression mode in which the ram image is already stored pre-compressed.
size_t get_ram_image_size () const
 Returns the number of bytes used by the in-memory image, or 0 if there is no in-memory image.
CPTA_uchar get_ram_mipmap_image (int n)
 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)
 Similiar to get_ram_mipmap_image(), however, in this case the void pointer for the given ram image is returned.
size_t get_ram_page_size () const
 Returns the number of bytes used by the in-memory image per page, or 0 if there is no in-memory image.
int get_ref_count () const
 Returns the current reference count.
bool get_render_to_texture () const
 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.
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
 Returns a sequence number which is guaranteed to change at least every time the texture's "simple" image data is modified.
CPTA_uchar get_simple_ram_image () const
 Returns the image data associated with the "simple" texture image.
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
 Returns the width of the "simple" image in texels.
int get_simple_y_size () const
 Returns the height of the "simple" image in texels.
TextureType get_texture_type () const
 Returns the overall interpretation of the texture.
virtual TypeHandle get_type () const
int get_type_index () const
 Returns the internal index number associated with this object's TypeHandle, a unique number for each different type.
CPTA_uchar get_uncompressed_ram_image ()
 Returns the system-RAM image associated with the texture, in an uncompressed form if at all possible.
WeakReferenceListget_weak_list () const
 Returns the WeakReferenceList associated with this ReferenceCount object.
WrapMode get_wrap_u () const
 Returns the wrap mode of the texture in the U direction.
WrapMode get_wrap_v () const
 Returns the wrap mode of the texture in the V direction.
WrapMode get_wrap_w () const
 Returns the wrap mode of the texture in the W direction.
int get_x_size () const
 Returns the width of the texture image in texels.
int get_y_size () const
 Returns the height of the texture image in texels.
int get_z_size () const
 Returns the depth of the texture image in texels.
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
 Returns true if the alpha_filename has been set and is available.
bool has_alpha_fullpath () const
 Returns true if the alpha_fullpath has been set and is available.
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
 Returns true if the filename has been set and is available.
bool has_fullpath () const
 Returns true if the fullpath has been set and is available.
bool has_name () const
 Returns true if the Namable has a nonempty name set, false if the name is empty.
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
 Returns true if the Texture has a "simple" image available in main RAM.
bool has_uncompressed_ram_image () const
 Returns true if the Texture has its image contents available in main RAM and is uncompressed, false otherwise.
bool has_weak_list () const
 Returns true if this particular ReferenceCount object has a WeakReferenceList created, false otherwise.
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.
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 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.
void local_object ()
 This function should be called, once, immediately after creating a new instance of some ReferenceCount-derived object on the stack.
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.
void mark_bam_modified ()
 Increments the bam_modified counter, so that this object will be invalidated and retransmitted on any open bam streams.
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.
void operator delete (void *ptr)
void operator delete (void *ptr, void *)
void operator delete (void *ptr, void *)
void operator delete (void *ptr)
void operator delete[] (void *ptr)
void operator delete[] (void *, void *)
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)
void * operator new[] (size_t size)
void * operator new[] (size_t size)
void * operator new[] (size_t size, void *ptr)
void * operator new[] (size_t size, void *ptr)
void output (ostream &out) const
 Outputs the Namable.
void prepare (PreparedGraphicsObjects *prepared_objects)
 Indicates that the texture should be enqueued to be prepared in the indicated prepared_objects at the beginning of the next frame.
TextureContextprepare_now (PreparedGraphicsObjects *prepared_objects, GraphicsStateGuardianBase *gsg)
 Creates a context for the texture on the particular GSG, if it does not already exist.
 PT (Texture) make_copy()
 PT (TexturePeeker) peek()
bool read (const Filename &fullpath, const LoaderOptions &options=LoaderOptions())
 Reads the named filename into the texture.
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, 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 (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=NULL, const LoaderOptions &options=LoaderOptions())
 Reads the texture from the indicated filename.
bool read_dds (istream &in, const string &filename="stream", bool header_only=false)
 Reads the texture from a DDS file object.
bool read_txo (istream &in, const string &filename="stream")
 Reads the texture from a Panda texture object.
void ref () const
 Explicitly increments the reference count.
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.
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.
void set_alpha_filename (const Filename &alpha_filename)
 Sets the name of the file that contains the image's alpha channel contents.
void set_alpha_fullpath (const Filename &alpha_fullpath)
 Sets the full pathname to the file that contains the image's alpha channel contents, as found along the search path.
void set_anisotropic_degree (int anisotropic_degree)
 Specifies the level of anisotropic filtering to apply to the texture.
void set_aux_data (const string &key, TypedReferenceCount *aux_data)
 Records an arbitrary object in the Texture, associated with a specified key.
void set_border_color (const Colorf &color)
 Specifies the solid color of the texture's border.
void set_component_type (ComponentType component_type)
 Changes the data value for the texture components.
void set_compression (CompressionMode compression)
 Requests that this particular Texture be compressed when it is loaded into texture memory.
void set_filename (const Filename &filename)
 Sets the name of the file that contains the image's contents.
void set_format (Format format)
 Changes the format value for the texture components.
void set_fullpath (const Filename &fullpath)
 Sets the full pathname to the file that contains the image's contents, as found along the search path.
void set_keep_ram_image (bool 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.
void set_loaded_from_image ()
 Sets the flag that indicates the texture has been loaded from a disk file or PNMImage.
void set_loaded_from_txo ()
 Sets the flag that indicates the texture has been loaded from a txo file.
void set_magfilter (FilterType filter)
void set_match_framebuffer_format (bool flag)
 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).
void set_minfilter (FilterType filter)
void set_name (const string &name)
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)
 Sets the post_load_store_cache flag.
void set_quality_level (QualityLevel quality_level)
 Sets a hint to the renderer about the desired performance / quality tradeoff for this particular texture.
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_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)
 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.
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)
 The W wrap direction is only used for 3-d textures.
void set_x_size (int x_size)
 Changes the x size indicated for the texture.
void set_y_size (int y_size)
 Changes the y size indicated for the texture.
void set_z_size (int z_size)
 Changes the z size indicated for the texture.
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 (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 ()
 Sets the texture as an empty 2-d texture with no dimensions.
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_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_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 ()
 Sets the texture as an empty cube map texture with no dimensions.
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().
bool store (PNMImage &pnmimage, int z, int n) const
 Saves the indicated page and mipmap level of the texture to the PNMImage.
bool store (PNMImage &pnmimage) const
 Saves the texture to the indicated PNMImage, but does not write it to disk.
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.
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.
virtual bool unref () const
 Explicitly decrements the reference count.
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.
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.
void weak_ref (WeakPointerToVoid *ptv)
 Adds the indicated PointerToVoid as a weak reference to this object.
void weak_unref (WeakPointerToVoid *ptv)
 Removes the indicated PointerToVoid as a weak reference to this object.
bool write (const Filename &fullpath)
 Writes the texture to the named filename.
void write (ostream &out, int indent_level) const
 Not to be confused with write(Filename), this method simply describes the texture properties.
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.
virtual void write_datagram (BamWriter *manager, Datagram &me)
 Function to write the important information in the particular object to a Datagram.
bool write_txo (ostream &out, const string &filename="stream") const
 Writes the texture to a Panda texture object.

Static Public Member Functions

static bool adjust_size (int &x_size, int &y_size, const string &name)
 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 string &name)
 Asks the PNMImage to change its scale when it reads the image, according to the whims of the Config.prc file.
static bool decode_raw_from_bam_stream (TypedWritable *&ptr, ReferenceCount *&ref_ptr, const string &data, BamReader *reader=NULL)
 Reads the string created by a previous call to encode_to_bam_stream(), and extracts the single object on that string.
static int down_to_power_2 (int value)
 Returns the largest power of 2 less than or equal to value.
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.
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 have_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_mipmap (FilterType type)
 Returns true if the indicated filter type requires the use of mipmaps, or false if it does not.
static bool is_specific (CompressionMode compression)
 Returns true if the indicated compression mode is one of the specific compression types, false otherwise.
static PT (Texture) make_texture()
static PT (TypedWritableReferenceCount) decode_from_bam_stream(const string &data
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, or ATS_down to control the scaling of textures.
static FilterType string_filter_type (const string &string)
 Returns the FilterType value associated with the given string representation, or FT_invalid if the string does not match any known FilterType value.
static WrapMode string_wrap_mode (const string &string)
 Returns the WrapMode value associated with the given string representation, or WM_invalid if the string does not match any known WrapMode value.
static int up_to_power_2 (int value)
 Returns the smallest power of 2 greater than or equal to value.

Public Attributes

static BamReaderreader = NULL)

Static Public Attributes

static TypedWritable *const Null = (TypedWritable*)0L

Protected Types

typedef pmap
< PreparedGraphicsObjects
*, TextureContext * > 
Contexts
typedef pvector< RamImageRamImages
typedef pmap< CPT(InternalName),
PT(Texture)> 
RelatedTextures

Protected Member Functions

 Texture (const Texture &copy)
 Use Texture::make_copy() to make a duplicate copy of an existing Texture.
bool consider_auto_process_ram_image (bool generate_mipmaps, bool allow_compression)
 Should be called after a texture has been loaded into RAM, this considers generating mipmaps and/or compressing the RAM image.
void do_assign (const Texture &copy)
 The internal implementation of operator =().
virtual void do_clear ()
 The protected implementation of clear().
void do_clear_ram_image ()
void do_clear_ram_mipmap_images ()
void do_clear_simple_ram_image ()
bool do_compress_ram_image (CompressionMode compression, QualityLevel quality_level, GraphicsStateGuardianBase *gsg)
void do_generate_ram_mipmap_images ()
int do_get_expected_mipmap_x_size (int n) const
int do_get_expected_mipmap_y_size (int n) const
int do_get_expected_mipmap_z_size (int n) const
int do_get_expected_num_mipmap_levels () const
size_t do_get_expected_ram_image_size () const
size_t do_get_expected_ram_mipmap_image_size (int n) const
size_t do_get_expected_ram_mipmap_page_size (int n) const
size_t do_get_expected_ram_page_size () const
CPTA_uchar do_get_ram_image ()
size_t do_get_ram_image_size () const
size_t do_get_ram_mipmap_page_size (int n) const
CPTA_uchar do_get_uncompressed_ram_image ()
bool do_has_all_ram_mipmap_images () const
bool do_has_compression () const
virtual bool do_has_ram_image () const
 The protected implementation of has_ram_image().
bool do_has_ram_mipmap_image (int n) const
virtual bool do_has_uncompressed_ram_image () const
 The protected implementation of has_uncompressed_ram_image().
virtual bool do_load_one (const PNMImage &pnmimage, const string &name, int z, int n, const LoaderOptions &options)
 Internal method to load a single page or mipmap level.
PTA_uchar do_make_ram_image ()
 This is called internally to make a new ram image without updating _image_modified.
PTA_uchar do_make_ram_mipmap_image (int n)
PTA_uchar do_modify_ram_image ()
 This is called internally to uniquify the ram image pointer without updating _image_modified.
PTA_uchar do_modify_ram_mipmap_image (int n)
 This is called internally to uniquify the nth mipmap image pointer without updating _image_modified.
virtual bool do_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, const LoaderOptions &options, BamCacheRecord *record)
 The internal implementation of the various read() methods.
bool do_read_dds (istream &in, const string &filename, bool header_only)
bool do_read_dds_file (const Filename &fullpath, bool header_only)
 Called internally when read() detects a DDS file.
virtual bool do_read_one (const Filename &fullpath, const Filename &alpha_fullpath, int z, int n, int primary_file_num_channels, int alpha_file_channel, const LoaderOptions &options, bool header_only, BamCacheRecord *record)
 Called only from do_read(), this method reads a single image file, either one page or one mipmap level.
bool do_read_txo (istream &in, const string &filename)
bool do_read_txo_file (const Filename &fullpath)
 Called internally when read() detects a txo file.
bool do_reconsider_image_properties (int x_size, int y_size, int num_components, ComponentType component_type, int z, const LoaderOptions &options)
 Resets the internal Texture properties when a new image file is loaded.
bool do_reconsider_z_size (int z)
 Considers whether the z_size should automatically be adjusted when the user loads a new page.
bool do_reload ()
virtual void do_reload_ram_image (bool allow_compression)
 Called when the Texture image is required but the ram image is not available, this will reload it from disk or otherwise do whatever is required to make it available, if possible.
void do_set_anisotropic_degree (int anisotropic_degree)
void do_set_border_color (const Colorf &color)
void do_set_component_type (ComponentType component_type)
void do_set_compression (CompressionMode compression)
void do_set_format (Format format)
void do_set_magfilter (FilterType filter)
void do_set_minfilter (FilterType filter)
void do_set_pad_size (int x, int y, int z)
void do_set_quality_level (QualityLevel quality_level)
void do_set_ram_mipmap_image (int n, CPTA_uchar image, size_t page_size)
void do_set_simple_ram_image (CPTA_uchar image, int x_size, int y_size)
void do_set_wrap_u (WrapMode wrap)
void do_set_wrap_v (WrapMode wrap)
void do_set_wrap_w (WrapMode wrap)
void do_set_x_size (int x_size)
void do_set_y_size (int y_size)
void do_set_z_size (int z_size)
 Changes the z size indicated for the texture.
void do_setup_texture (TextureType texture_type, int x_size, int y_size, int z_size, ComponentType component_type, Format format)
bool do_store_one (PNMImage &pnmimage, int z, int n) const
 Internal method to copy a page and/or mipmap level to a PNMImage.
bool do_test_ref_count_integrity () const
 Does some easy checks to make sure that the reference count isn't completely bogus.
bool do_test_ref_count_nonzero () const
 Returns true if the reference count is nonzero, false otherwise.
bool do_uncompress_ram_image ()
void do_unlock_and_reload_ram_image (bool allow_compression)
 This is similar to do_reload_ram_image(), except that the lock is released during the actual operation, to allow normal queries into the Texture object to continue during what might be a slow operation.
bool do_write (const Filename &fullpath, int z, int n, bool write_pages, bool write_mipmaps) const
 Internal method to write a series of pages and/or mipmap levels to disk files.
bool do_write_one (const Filename &fullpath, int z, int n) const
 Internal method to write the indicated page and mipmap level to a disk image file.
bool do_write_txo (ostream &out, const string &filename) const
bool do_write_txo_file (const Filename &fullpath) const
 Called internally when write() detects a txo filename.
void fillin (DatagramIterator &scan, BamReader *manager, bool has_rawdata)
 Function that reads out of the datagram (or asks manager to read) all of the data that is needed to re-create this object and stores it in the appropiate place.
void fillin_from (Texture *dummy)
 Called in make_from_bam(), this method properly copies the attributes from the bam stream (as stored in dummy) into this texture, updating the modified flags appropriately.
void operator= (const Texture &copy)
 Use Texture::make_copy() to make a duplicate copy of an existing Texture.
virtual PT (Texture) do_make_copy()
virtual void reconsider_dirty ()
 Called by TextureContext to give the Texture a chance to mark itself dirty before rendering, if necessary.

Static Protected Member Functions

static TypedWritablemake_from_bam (const FactoryParams &params)
 Factory method to generate a Texture object.

Protected Attributes

int _alpha_file_channel
Filename _alpha_filename
Filename _alpha_fullpath
int _anisotropic_degree
Colorf _border_color
ComponentType _component_type
int _component_width
CompressionMode _compression
Contexts _contexts
ConditionVarFull _cvar
Filename _filename
Format _format
Filename _fullpath
bool _has_read_mipmaps
bool _has_read_pages
UpdateSeq _image_modified
bool _keep_ram_image
bool _loaded_from_image
bool _loaded_from_txo
Mutex _lock
FilterType _magfilter
bool _match_framebuffer_format
FilterType _minfilter
int _num_components
int _num_mipmap_levels_read
int _orig_file_x_size
int _orig_file_y_size
int _pad_x_size
int _pad_y_size
int _pad_z_size
bool _post_load_store_cache
int _primary_file_num_channels
UpdateSeq _properties_modified
QualityLevel _quality_level
CompressionMode _ram_image_compression
RamImages _ram_images
RelatedTextures _related_textures
bool _reloading
bool _render_to_texture
PN_int32 _simple_image_date_generated
UpdateSeq _simple_image_modified
RamImage _simple_ram_image
int _simple_x_size
int _simple_y_size
Filename _texture_pool_key
TextureType _texture_type
WrapMode _wrap_u
WrapMode _wrap_v
WrapMode _wrap_w
int _x_size
int _y_size
int _z_size

Friends

class PreparedGraphicsObjects
class TextureContext
class TexturePeeker
class TexturePool

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 63 of file texture.h.


Constructor & Destructor Documentation

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

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 169 of file texture.cxx.

Referenced by do_clear(), and make_from_bam().

Texture::Texture ( const Texture copy) [protected]

Use Texture::make_copy() to make a duplicate copy of an existing Texture.

Definition at line 224 of file texture.cxx.

References operator=().


Member Function Documentation

bool Texture::adjust_size ( int &  x_size,
int &  y_size,
const string &  name 
) [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 1903 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(), and up_to_power_2().

Referenced by consider_rescale(), and do_reload_ram_image().

ReferenceCount * TypedWritableReferenceCount::as_reference_count ( ) [virtual, inherited]

Returns the pointer cast to a ReferenceCount pointer, if it is in fact of that type.

Reimplemented from TypedWritable.

Definition at line 26 of file typedWritableReferenceCount.cxx.

TypedObject * TypedObject::as_typed_object ( ) [inline, inherited]

Returns the object, upcast (if necessary) to a TypedObject pointer.

Definition at line 99 of file typedObject.I.

const TypedObject * TypedObject::as_typed_object ( ) const [inline, inherited]

Returns the object, upcast (if necessary) to a TypedObject pointer.

Definition at line 110 of file typedObject.I.

void Texture::clear ( ) [inline]

Reinitializes the texture to its default, empty state (except for the name).

Definition at line 46 of file texture.I.

void Texture::clear_alpha_filename ( ) [inline]

Removes the alpha filename, if it was previously set.

See set_alpha_filename().

Definition at line 1725 of file texture.I.

void Texture::clear_alpha_fullpath ( ) [inline]

Removes the alpha fullpath, if it was previously set.

See set_alpha_fullpath().

Definition at line 1778 of file texture.I.

void Texture::clear_aux_data ( const string &  key)

Removes a record previously recorded via set_aux_data().

Definition at line 651 of file texture.cxx.

void Texture::clear_filename ( ) [inline]

Removes the alpha filename, if it was previously set.

See set_filename().

Definition at line 1691 of file texture.I.

void Texture::clear_fullpath ( ) [inline]

Removes the alpha fullpath, if it was previously set.

See set_fullpath().

Definition at line 1751 of file texture.I.

void Namable::clear_name ( ) [inline, inherited]

Resets the Namable's name to empty.

Reimplemented in AsyncTask.

Definition at line 64 of file namable.I.

void Texture::clear_ram_image ( ) [inline]

Discards the current system-RAM image.

Definition at line 1250 of file texture.I.

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

void Texture::clear_ram_mipmap_image ( int  n)

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

Definition at line 999 of file texture.cxx.

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 1498 of file texture.I.

void Texture::clear_simple_ram_image ( ) [inline]

Discards the current "simple" image.

Definition at line 1624 of file texture.I.

int TypedWritable::complete_pointers ( TypedWritable **  p_list,
BamReader manager 
) [virtual, inherited]

Receives an array of pointers, one for each time manager->read_pointer() was called in fillin().

Returns the number of pointers processed.

This is the callback function that is made by the BamReader at some later point, after all of the required pointers have been filled in. It is necessary because there might be forward references in a bam file; when we call read_pointer() in fillin(), the object may not have been read from the file yet, so we do not have a pointer available at that time. Thus, instead of returning a pointer, read_pointer() simply reserves a later callback. This function provides that callback. The calling object is responsible for keeping track of the number of times it called read_pointer() and extracting the same number of pointers out of the supplied vector, and storing them appropriately within the object.

Reimplemented in CFDoCullCommand, AnimBundleNode, AnimChannelMatrixDynamic, AnimChannelScalarDynamic, AnimGroup, MovingPartBase, PartBundle, PartBundleNode, PartGroup, Character, CharacterJoint, CharacterJointEffect, CharacterVertexSlider, JointVertexTransform, CollisionNode, DataNodeTransmit, GeomVertexArrayData, GeomVertexArrayFormat, GeomVertexData, GeomVertexFormat, SliderTable, TextureStage, TransformBlendTable, TransformTable, PiecewiseCurve, ClipPlaneAttrib, FogAttrib, LensNode, LightAttrib, MaterialAttrib, PortalNode, RenderEffects, RenderState, TexGenAttrib, TexMatrixAttrib, TexProjectorEffect, TextureAttrib, BamCacheIndex, RecorderFrame, EggFile, ImageFile, PaletteGroup, PaletteGroups, PaletteImage, PalettePage, Palettizer, SourceTextureImage, TextureImage, TexturePlacement, TextureProperties, and TextureReference.

Definition at line 103 of file typedWritable.cxx.

bool Texture::compress_ram_image ( Texture::CompressionMode  compression = CM_on,
Texture::QualityLevel  quality_level = QL_default,
GraphicsStateGuardianBase gsg = NULL 
) [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 1301 of file texture.I.

bool Texture::consider_auto_process_ram_image ( bool  generate_mipmaps,
bool  allow_compression 
) [protected]

Should be called after a texture has been loaded into RAM, this considers generating mipmaps and/or compressing the RAM image.

Returns true if the image was modified by this operation, false if it wasn't.

Definition at line 3464 of file texture.cxx.

References GraphicsStateGuardianBase::get_default_gsg().

Referenced by do_read(), do_reload_ram_image(), and load().

void Texture::consider_rescale ( PNMImage pnmimage,
const string &  name 
) [static]

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

This method should be called after pnmimage.read_header() has been called, but before pnmimage.read().

Definition at line 1689 of file texture.cxx.

References adjust_size(), PNMImageHeader::get_x_size(), PNMImageHeader::get_y_size(), and PNMImage::set_read_size().

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.

This method should be called after pnmimage.read_header() has been called, but before pnmimage.read().

Definition at line 1673 of file texture.cxx.

Referenced by do_read_one().

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 WebBrowserTexture, and VideoTexture.

Definition at line 1755 of file texture.cxx.

Referenced by TextureAttrib::cull_callback().

bool TypedWritable::decode_raw_from_bam_stream ( TypedWritable *&  ptr,
ReferenceCount *&  ref_ptr,
const string &  data,
BamReader reader = NULL 
) [static, inherited]

Reads the string created by a previous call to encode_to_bam_stream(), and extracts the single object on that string.

Returns true on success, false on on error.

This variant sets the TypedWritable and ReferenceCount pointers separately; both are pointers to the same object. The reference count is not incremented; it is the caller's responsibility to manage the reference count.

Note that this method cannot be used to retrieve objects that do not inherit from ReferenceCount, because these objects cannot persist beyond the lifetime of the BamReader that reads them. To retrieve these objects from a bam stream, you must construct a BamReader directly.

If you happen to know that the particular object in question inherits from TypedWritableReferenceCount or PandaNode, consider calling the variant of decode_from_bam_stream() defined for those methods, which presents a simpler interface.

Definition at line 353 of file typedWritable.cxx.

References BamReader::init(), DatagramInputFile::open(), DatagramInputFile::read_header(), BamReader::read_object(), ReferenceCount::ref(), BamReader::resolve(), BamReader::set_source(), and ReferenceCount::unref().

void Texture::do_assign ( const Texture copy) [protected]

The internal implementation of operator =().

Assumes the lock is already held on both Textures.

Definition at line 3809 of file texture.cxx.

Referenced by do_clear(), and operator=().

void Texture::do_clear ( ) [protected, virtual]

The protected implementation of clear().

Assumes the lock is already held.

Definition at line 3860 of file texture.cxx.

References do_assign(), and Texture().

Referenced by load(), and read().

bool Texture::do_has_ram_image ( ) const [protected, virtual]

The protected implementation of has_ram_image().

Assumes the lock is already held.

Reimplemented in VideoTexture.

Definition at line 4193 of file texture.cxx.

Referenced by do_reload_ram_image(), do_unlock_and_reload_ram_image(), do_write(), has_ram_image(), might_have_ram_image(), write(), and write_datagram().

bool Texture::do_has_uncompressed_ram_image ( ) const [protected, virtual]

The protected implementation of has_uncompressed_ram_image().

Assumes the lock is already held.

Definition at line 4205 of file texture.cxx.

Referenced by do_write(), and has_uncompressed_ram_image().

bool Texture::do_load_one ( const PNMImage pnmimage,
const string &  name,
int  z,
int  n,
const LoaderOptions options 
) [protected, virtual]
PTA_uchar Texture::do_make_ram_image ( ) [protected]

This is called internally to make a new ram image without updating _image_modified.

Definition at line 3382 of file texture.cxx.

Referenced by do_modify_ram_image(), generate_alpha_scale_map(), generate_normalization_cube_map(), and make_ram_image().

PTA_uchar Texture::do_modify_ram_image ( ) [protected]

This is called internally to uniquify the ram image pointer without updating _image_modified.

Definition at line 3365 of file texture.cxx.

References do_make_ram_image().

Referenced by do_load_one(), and modify_ram_image().

PTA_uchar Texture::do_modify_ram_mipmap_image ( int  n) [protected]

This is called internally to uniquify the nth mipmap image pointer without updating _image_modified.

Definition at line 3399 of file texture.cxx.

Referenced by do_load_one(), and modify_ram_mipmap_image().

bool Texture::do_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,
const LoaderOptions options,
BamCacheRecord record 
) [protected, virtual]
bool Texture::do_read_dds_file ( const Filename fullpath,
bool  header_only 
) [protected]

Called internally when read() detects a DDS file.

Assumes the lock is already held.

Definition at line 2609 of file texture.cxx.

References VirtualFileSystem::close_read_file(), Filename::get_basename_wo_extension(), VirtualFileSystem::get_global_ptr(), and Namable::has_name().

Referenced by do_read().

bool Texture::do_read_one ( const Filename fullpath,
const Filename alpha_fullpath,
int  z,
int  n,
int  primary_file_num_channels,
int  alpha_file_channel,
const LoaderOptions options,
bool  header_only,
BamCacheRecord record 
) [protected, virtual]
bool Texture::do_read_txo_file ( const Filename fullpath) [protected]

Called internally when read() detects a txo file.

Assumes the lock is already held.

Definition at line 2501 of file texture.cxx.

References VirtualFileSystem::close_read_file(), and VirtualFileSystem::get_global_ptr().

Referenced by do_read().

bool Texture::do_reconsider_image_properties ( int  x_size,
int  y_size,
int  num_components,
Texture::ComponentType  component_type,
int  z,
const LoaderOptions options 
) [protected]

Resets the internal Texture properties when a new image file is loaded.

Returns true if the new image is valid, false otherwise.

Assumes the lock is already held.

Definition at line 3721 of file texture.cxx.

Referenced by do_load_one().

bool Texture::do_reconsider_z_size ( int  z) [protected]

Considers whether the z_size should automatically be adjusted when the user loads a new page.

Returns true if the z size is valid, false otherwise.

Assumes the lock is already held.

Definition at line 3688 of file texture.cxx.

Referenced by do_load_one().

void Texture::do_reload_ram_image ( bool  allow_compression) [protected, virtual]

Called when the Texture image is required but the ram image is not available, this will reload it from disk or otherwise do whatever is required to make it available, if possible.

Assumes the lock is already held. The lock will be held during the duration of this operation.

Definition at line 3242 of file texture.cxx.

References BamCacheRecord::add_dependent_file(), adjust_size(), consider_auto_process_ram_image(), do_has_ram_image(), do_read(), Filename::get_basename(), BamCache::get_cache_compressed_textures(), BamCache::get_cache_textures(), BamCacheRecord::get_data(), BamCache::get_global_ptr(), BamCacheRecord::has_data(), BamCacheRecord::set_data(), BamCache::store(), and uses_mipmaps().

void Texture::do_set_z_size ( int  z_size) [protected]

Changes the z size indicated for the texture.

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

Definition at line 4040 of file texture.cxx.

Referenced by do_read(), set_size_padded(), and set_z_size().

bool Texture::do_store_one ( PNMImage pnmimage,
int  z,
int  n 
) const [protected]

Internal method to copy a page and/or mipmap level to a PNMImage.

Definition at line 3047 of file texture.cxx.

Referenced by do_write_one(), generate_simple_ram_image(), and store().

bool ReferenceCount::do_test_ref_count_integrity ( ) const [protected, inherited]

Does some easy checks to make sure that the reference count isn't completely bogus.

Returns true if ok, false otherwise.

Reimplemented in NodeReferenceCount, CachedTypedWritableReferenceCount, and NodeCachedReferenceCount.

Definition at line 29 of file referenceCount.cxx.

Referenced by ReferenceCount::do_test_ref_count_nonzero(), and ReferenceCount::test_ref_count_integrity().

bool ReferenceCount::do_test_ref_count_nonzero ( ) const [protected, inherited]

Returns true if the reference count is nonzero, false otherwise.

Definition at line 56 of file referenceCount.cxx.

References ReferenceCount::do_test_ref_count_integrity().

Referenced by ReferenceCount::test_ref_count_nonzero().

void Texture::do_unlock_and_reload_ram_image ( bool  allow_compression) [protected]

This is similar to do_reload_ram_image(), except that the lock is released during the actual operation, to allow normal queries into the Texture object to continue during what might be a slow operation.

The lock is re-acquired after the operation is complete, and only then does all of the new data appear.

Assumes the lock is held on entry. It will be held again on return.

Definition at line 3151 of file texture.cxx.

References MutexDirect::acquire(), do_has_ram_image(), get_ram_image_compression(), has_ram_image(), ConditionVarFullDirect::notify_all(), MutexDirect::release(), and ConditionVarFullDirect::wait().

bool Texture::do_write ( const Filename fullpath,
int  z,
int  n,
bool  write_pages,
bool  write_mipmaps 
) const [protected]

Internal method to write a series of pages and/or mipmap levels to disk files.

Definition at line 2930 of file texture.cxx.

References do_has_ram_image(), do_has_uncompressed_ram_image(), do_write_one(), do_write_txo_file(), Filename::has_hash(), and Filename::pattern_filename().

Referenced by write().

bool Texture::do_write_one ( const Filename fullpath,
int  z,
int  n 
) const [protected]

Internal method to write the indicated page and mipmap level to a disk image file.

Definition at line 3020 of file texture.cxx.

References do_store_one(), and PNMImage::write().

Referenced by do_write().

bool Texture::do_write_txo_file ( const Filename fullpath) const [protected]

Called internally when write() detects a txo filename.

Definition at line 3070 of file texture.cxx.

References Filename::get_extension(), and Filename::open_write().

Referenced by do_write().

int Texture::down_to_power_2 ( int  value) [static]

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

Definition at line 1653 of file texture.cxx.

Referenced by adjust_size(), generate_simple_ram_image(), and ParasiteBuffer::set_size_and_recalc().

string TypedWritable::encode_to_bam_stream ( ) const [inline, inherited]

Converts the TypedWritable object into a single stream of data using a BamWriter, and returns that data as a string string.

Returns empty string on failure.

This is a convenience method particularly useful for cases when you are only serializing a single object. If you have many objects to process, it is more efficient to use the same BamWriter to serialize all of them together.

Definition at line 86 of file typedWritable.I.

bool TypedWritable::encode_to_bam_stream ( string &  data,
BamWriter writer = NULL 
) const [inherited]

Converts the TypedWritable object into a single stream of data using a BamWriter, and stores that data in the indicated string.

Returns true on success, false on failure.

This is a convenience method particularly useful for cases when you are only serializing a single object. If you have many objects to process, it is more efficient to use the same BamWriter to serialize all of them together.

Definition at line 283 of file typedWritable.cxx.

References BamWriter::init(), DatagramOutputFile::open(), BamWriter::set_target(), DatagramOutputFile::write_header(), and BamWriter::write_object().

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 563 of file texture.cxx.

References uses_mipmaps().

Referenced by DXTextureContext8::create_texture().

void Texture::fillin ( DatagramIterator scan,
BamReader manager,
bool  has_rawdata 
) [protected]

Function that reads out of the datagram (or asks manager to read) all of the data that is needed to re-create this object and stores it in the appropiate place.

Definition at line 6167 of file texture.cxx.

References DatagramIterator::get_bool(), get_expected_ram_page_size(), BamReader::get_file_minor_ver(), DatagramIterator::get_int16(), DatagramIterator::get_int32(), DatagramIterator::get_uint32(), DatagramIterator::get_uint8(), has_simple_ram_image(), and LVecBase4f::read_datagram().

Referenced by make_from_bam().

void TypedWritable::fillin ( DatagramIterator scan,
BamReader manager 
) [virtual, inherited]

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.

It is also called directly by the BamReader to re-read the data for an object that has been placed on the stream for an update.

Reimplemented in CFDoCullCommand, AnimBundle, AnimBundleNode, AnimChannelBase, AnimChannelMatrixDynamic, AnimChannelMatrixFixed, AnimChannelMatrixXfmTable, AnimChannelScalarDynamic, AnimChannelScalarTable, AnimGroup, AnimPreloadTable, MovingPart< SwitchType >, MovingPartBase, PartBundle, PartBundleNode, PartGroup, Character, CharacterJoint, CharacterJointEffect, CharacterVertexSlider, JointVertexTransform, CollisionBox, CollisionDSSolid, CollisionFloorMesh, CollisionInvSphere, CollisionLine, CollisionNode, CollisionParabola, CollisionPlane, CollisionPolygon, CollisionRay, CollisionSegment, CollisionSolid, CollisionSphere, CollisionTube, DataNode, DataNodeTransmit, ButtonEventList, EventStoreValue< Type >, Geom, GeomPrimitive, GeomVertexArrayData, GeomVertexArrayFormat, GeomVertexData, GeomVertexFormat, Lens, Material, SliderTable, TextureStage, TransformBlendTable, TransformTable, UserVertexSlider, UserVertexTransform, VertexSlider, VertexTransform, CubicCurveseg, HermiteCurve, NurbsCurve, ParametricCurve, PiecewiseCurve, RopeNode, SheetNode, AlphaTestAttrib, AntialiasAttrib, AudioVolumeAttrib, AuxBitplaneAttrib, BillboardEffect, Camera, ClipPlaneAttrib, ColorAttrib, ColorBlendAttrib, ColorScaleAttrib, ColorWriteAttrib, CompassEffect, CullBinAttrib, CullFaceAttrib, DecalEffect, DepthOffsetAttrib, DepthTestAttrib, DepthWriteAttrib, Fog, FogAttrib, GeomNode, LensNode, LightAttrib, LightRampAttrib, MaterialAttrib, ModelNode, ModelRoot, PandaNode, PlaneNode, PolylightNode, PortalNode, RenderAttrib, RenderEffect, RenderEffects, RenderModeAttrib, RenderState, RescaleNormalAttrib, ScissorAttrib, ScissorEffect, ShadeModelAttrib, ShowBoundsEffect, StencilAttrib, TexGenAttrib, TexMatrixAttrib, TexProjectorEffect, TextureAttrib, TransformState, TransparencyAttrib, UvScrollNode, AmbientLight, CallbackNode, DirectionalLight, FadeLODNode, LightLensNode, LightNode, LODNode, PointLight, SequenceNode, Spotlight, SwitchNode, BamCacheIndex, BamCacheRecord, MouseRecorder, RecorderFrame, RecorderHeader, RecorderTable, DestTextureImage, EggFile, ImageFile, PaletteGroup, PaletteGroups, PaletteImage, PalettePage, Palettizer, SourceTextureImage, TextureImage, TexturePlacement, TexturePosition, TextureProperties, TextureReference, MovingPart< ACScalarSwitchType >, and MovingPart< ACMatrixSwitchType >.

Definition at line 133 of file typedWritable.cxx.

Referenced by EventStoreValue< Type >::fillin().

void Texture::fillin_from ( Texture dummy) [protected]

Called in make_from_bam(), this method properly copies the attributes from the bam stream (as stored in dummy) into this texture, updating the modified flags appropriately.

Definition at line 6262 of file texture.cxx.

References get_anisotropic_degree(), get_border_color(), get_compression(), get_format(), get_magfilter(), get_minfilter(), get_num_components(), get_quality_level(), get_simple_ram_image(), get_simple_x_size(), get_simple_y_size(), get_wrap_u(), get_wrap_v(), get_wrap_w(), and has_simple_ram_image().

Referenced by make_from_bam().

void TypedWritable::finalize ( BamReader manager) [virtual, inherited]

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 in PartBundle, Geom, GeomPrimitive, GeomVertexArrayData, GeomVertexArrayFormat, GeomVertexData, InternalName, GeomNode, LightAttrib, RenderAttrib, RenderEffect, RenderEffects, RenderState, PaletteGroup, and Palettizer.

Definition at line 145 of file typedWritable.cxx.

Referenced by BamReader::finalize_now().

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 385 of file texture.cxx.

References do_make_ram_image().

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 280 of file texture.cxx.

References do_make_ram_image(), LVecBase3f::normalize(), and LMatrix4f::xform_point().

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 1519 of file texture.I.

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 1054 of file texture.cxx.

References do_store_one(), down_to_power_2(), PNMImageHeader::get_num_channels(), ConfigVariableInt::get_word(), and PNMImage::quick_filter_from().

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 1244 of file texture.cxx.

References BufferContext::get_active().

const Filename & Texture::get_alpha_filename ( ) const [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 371 of file texture.I.

const Filename & Texture::get_alpha_fullpath ( ) const [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 422 of file texture.I.

int Texture::get_anisotropic_degree ( ) const [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.

Definition at line 815 of file texture.I.

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

TypedReferenceCount * Texture::get_aux_data ( const string &  key) const

Returns a record previously recorded via set_aux_data().

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

Definition at line 664 of file texture.cxx.

UpdateSeq TypedWritable::get_bam_modified ( ) const [inline, inherited]

Returns the current bam_modified counter.

This counter is normally incremented automatically whenever the object is modified.

Definition at line 66 of file typedWritable.I.

Referenced by BamWriter::consider_update(), and BamWriter::write_pointer().

Colorf Texture::get_border_color ( ) const [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.

Definition at line 844 of file texture.I.

Referenced by DXGraphicsStateGuardian9::apply_texture(), DXGraphicsStateGuardian8::apply_texture(), fillin_from(), and TinyGraphicsStateGuardian::framebuffer_copy_to_texture().

Texture::ComponentType Texture::get_component_type ( ) const [inline]
int Texture::get_component_width ( ) const [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 573 of file texture.I.

Referenced by DXTextureContext9::d3d_surface_to_texture(), DXTextureContext8::d3d_surface_to_texture(), DXTextureContext9::extract_texture_data(), DXTextureContext8::extract_texture_data(), MovieVideoCursor::fetch_into_texture_alpha(), and MovieVideoCursor::fetch_into_texture_rgb().

Texture::CompressionMode Texture::get_compression ( ) const [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 863 of file texture.I.

Referenced by DXTextureContext8::create_texture(), DXTextureContext9::create_texture(), and fillin_from().

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 1226 of file texture.cxx.

References BufferContext::get_data_size_bytes().

int Texture::get_effective_anisotropic_degree ( ) const [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.

Definition at line 828 of file texture.I.

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

Texture::FilterType Texture::get_effective_magfilter ( ) const

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.

Definition at line 807 of file texture.cxx.

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

Texture::FilterType Texture::get_effective_minfilter ( ) const

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.

Definition at line 787 of file texture.cxx.

Referenced by DXGraphicsStateGuardian9::apply_texture(), DXGraphicsStateGuardian8::apply_texture(), and uses_mipmaps().

Texture::QualityLevel Texture::get_effective_quality_level ( ) const [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 954 of file texture.I.

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 984 of file texture.I.

Referenced by DXTextureContext9::extract_texture_data(), and DXTextureContext8::extract_texture_data().

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 996 of file texture.I.

Referenced by DXTextureContext9::extract_texture_data(), and DXTextureContext8::extract_texture_data().

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 1008 of file texture.I.

int Texture::get_expected_num_mipmap_levels ( ) const [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 972 of file texture.I.

size_t Texture::get_expected_ram_image_size ( ) const [inline]

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

Definition at line 1118 of file texture.I.

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 1422 of file texture.I.

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_image_size(n).

Definition at line 1436 of file texture.I.

size_t Texture::get_expected_ram_page_size ( ) const [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 1132 of file texture.I.

Referenced by DXTextureContext9::d3d_surface_to_texture(), DXTextureContext8::d3d_surface_to_texture(), MovieVideoCursor::fetch_into_texture_alpha(), MovieVideoCursor::fetch_into_texture_rgb(), fillin(), and TinyGraphicsStateGuardian::framebuffer_copy_to_ram().

const Filename & Texture::get_filename ( ) const [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 345 of file texture.I.

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

Texture::Format Texture::get_format ( ) const [inline]
const Filename & Texture::get_fullpath ( ) const [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 396 of file texture.I.

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

UpdateSeq Texture::get_image_modified ( ) const [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 1649 of file texture.I.

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

bool Texture::get_keep_ram_image ( ) const [virtual]

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().

Reimplemented in WebBrowserTexture, and VideoTexture.

Definition at line 862 of file texture.cxx.

bool Texture::get_loaded_from_image ( ) const [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 1868 of file texture.I.

bool Texture::get_loaded_from_txo ( ) const [inline]

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

Definition at line 1892 of file texture.I.

Texture::FilterType Texture::get_magfilter ( ) const [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().

Definition at line 802 of file texture.I.

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

bool Texture::get_match_framebuffer_format ( ) const [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 1907 of file texture.I.

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

Texture::FilterType Texture::get_minfilter ( ) const [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().

Definition at line 789 of file texture.I.

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

int Texture::get_num_components ( ) const [inline]
int Texture::get_num_loadable_ram_mipmap_images ( ) const

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 885 of file texture.cxx.

References uses_mipmaps().

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

int Texture::get_num_ram_mipmap_images ( ) const [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 1345 of file texture.I.

int Texture::get_orig_file_x_size ( ) const [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 521 of file texture.I.

int Texture::get_orig_file_y_size ( ) const [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 533 of file texture.I.

int Texture::get_orig_file_z_size ( ) const [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 545 of file texture.I.

int Texture::get_pad_x_size ( ) const [inline]

Returns size of the pad region.

See set_pad_size.

Definition at line 467 of file texture.I.

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

int Texture::get_pad_y_size ( ) const [inline]

Returns size of the pad region.

See set_pad_size.

Definition at line 477 of file texture.I.

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

int Texture::get_pad_z_size ( ) const [inline]

Returns size of the pad region.

See set_pad_size.

Definition at line 487 of file texture.I.

Referenced by GraphicsStateGuardian::fetch_specified_part().

bool Texture::get_post_load_store_cache ( ) const [inline]

Returns the setting of the post_load_store_cache flag.

See set_post_load_store_cache().

Definition at line 1937 of file texture.I.

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

UpdateSeq Texture::get_properties_modified ( ) const [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 1637 of file texture.I.

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

Texture::QualityLevel Texture::get_quality_level ( ) const [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 940 of file texture.I.

Referenced by fillin_from(), and StaticTextFont::StaticTextFont().

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 1166 of file texture.I.

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

CPTA_uchar Texture::get_ram_image_as ( const 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 4303 of file texture.cxx.

Texture::CompressionMode Texture::get_ram_image_compression ( ) const [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 1182 of file texture.I.

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

size_t Texture::get_ram_image_size ( ) const [inline]

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

Definition at line 1083 of file texture.I.

Referenced by TinyGraphicsStateGuardian::framebuffer_copy_to_ram().

CPTA_uchar Texture::get_ram_mipmap_image ( int  n)

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 922 of file texture.cxx.

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 1387 of file texture.I.

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 1409 of file texture.I.

void * Texture::get_ram_mipmap_pointer ( int  n)

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 939 of file texture.cxx.

size_t Texture::get_ram_page_size ( ) const [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 1101 of file texture.I.

int ReferenceCount::get_ref_count ( ) const [inline, inherited]
bool Texture::get_render_to_texture ( ) const [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 901 of file texture.I.

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

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 1263 of file texture.cxx.

References BufferContext::get_resident().

UpdateSeq Texture::get_simple_image_modified ( ) const [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 1661 of file texture.I.

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

CPTA_uchar Texture::get_simple_ram_image ( ) const [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 1587 of file texture.I.

Referenced by fillin_from().

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 1564 of file texture.I.

int Texture::get_simple_x_size ( ) const [inline]

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

Definition at line 1531 of file texture.I.

Referenced by fillin_from().

int Texture::get_simple_y_size ( ) const [inline]

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

Definition at line 1541 of file texture.I.

Referenced by fillin_from().

Texture::TextureType Texture::get_texture_type ( ) const [inline]
AutoTextureScale Texture::get_textures_power_2 ( ) [inline, static]

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

It is initialized from the config variable of the same name, but it can be subsequently adjusted.

Definition at line 2181 of file texture.I.

Referenced by adjust_size(), set_size_padded(), and MovieVideoCursor::setup_texture().

int TypedObject::get_type_index ( ) const [inline, inherited]

Returns the internal index number associated with this object's TypeHandle, a unique number for each different type.

This is equivalent to get_type().get_index().

Definition at line 52 of file typedObject.I.

References TypeHandle::get_index().

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 1223 of file texture.I.

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

WeakReferenceList * ReferenceCount::get_weak_list ( ) const [inline, inherited]

Returns the WeakReferenceList associated with this ReferenceCount object.

If there has never been a WeakReferenceList associated with this object, creates one now.

Definition at line 307 of file referenceCount.I.

Referenced by ReferenceCount::weak_ref().

Texture::WrapMode Texture::get_wrap_u ( ) const [inline]

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

Definition at line 752 of file texture.I.

Referenced by DXGraphicsStateGuardian9::apply_texture(), DXGraphicsStateGuardian8::apply_texture(), and fillin_from().

Texture::WrapMode Texture::get_wrap_v ( ) const [inline]

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

Definition at line 763 of file texture.I.

Referenced by DXGraphicsStateGuardian9::apply_texture(), DXGraphicsStateGuardian8::apply_texture(), and fillin_from().

Texture::WrapMode Texture::get_wrap_w ( ) const [inline]

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

This is the depth direction of 3-d textures.

Definition at line 775 of file texture.I.

Referenced by DXGraphicsStateGuardian8::apply_texture(), DXGraphicsStateGuardian9::apply_texture(), and fillin_from().

int Texture::get_x_size ( ) const [inline]
int Texture::get_y_size ( ) const [inline]
int Texture::get_z_size ( ) const [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 457 of file texture.I.

Referenced by DXTextureContext9::create_texture(), DXTextureContext8::create_texture(), DXGraphicsStateGuardian9::do_framebuffer_copy_to_ram(), DXGraphicsStateGuardian8::do_framebuffer_copy_to_ram(), GraphicsStateGuardian::fetch_specified_part(), and TinyGraphicsStateGuardian::framebuffer_copy_to_ram().

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 1374 of file texture.I.

bool Texture::has_alpha ( Format  format) [static]

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

Definition at line 1852 of file texture.cxx.

Referenced by EggRenderState::fill_state().

bool Texture::has_alpha_filename ( ) const [inline]

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

See set_alpha_filename().

Definition at line 357 of file texture.I.

bool Texture::has_alpha_fullpath ( ) const [inline]

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

See set_alpha_fullpath().

Definition at line 408 of file texture.I.

bool Texture::has_binary_alpha ( Format  format) [static]

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

Definition at line 1879 of file texture.cxx.

Referenced by EggRenderState::fill_state().

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 882 of file texture.I.

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 WebBrowserTexture, and VideoTexture.

Definition at line 1737 of file texture.cxx.

Referenced by TextureAttrib::has_cull_callback().

bool Texture::has_filename ( ) const [inline]

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

See set_filename().

Definition at line 332 of file texture.I.

bool Texture::has_fullpath ( ) const [inline]

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

See set_fullpath().

Definition at line 383 of file texture.I.

bool Namable::has_name ( ) const [inline, inherited]
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 1042 of file texture.I.

References do_has_ram_image().

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

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 1361 of file texture.I.

bool Texture::has_simple_ram_image ( ) const [inline]

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

Definition at line 1552 of file texture.I.

Referenced by fillin(), fillin_from(), DXGraphicsStateGuardian9::upload_texture(), DXGraphicsStateGuardian8::upload_texture(), and write_datagram().

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 1055 of file texture.I.

References do_has_uncompressed_ram_image().

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

bool ReferenceCount::has_weak_list ( ) const [inline, inherited]

Returns true if this particular ReferenceCount object has a WeakReferenceList created, false otherwise.

In general, this will be true if there was ever a WeakPointerTo created for this object (even if there is not any for it now).

Definition at line 294 of file referenceCount.I.

Referenced by ReferenceCount::weak_unref().

bool Texture::have_textures_power_2 ( ) [inline, static]

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 2198 of file texture.I.

bool TypedObject::is_exact_type ( TypeHandle  handle) const [inline, inherited]
bool Texture::is_mipmap ( FilterType  type) [static]

Returns true if the indicated filter type requires the use of mipmaps, or false if it does not.

Definition at line 1586 of file texture.cxx.

Referenced by uses_mipmaps().

bool TypedObject::is_of_type ( TypeHandle  handle) const [inline, inherited]

Returns true if the current object is or derives from the indicated type.

Definition at line 63 of file typedObject.I.

References TypeHandle::is_derived_from().

Referenced by EggSliderData::add_back_pointer(), EggJointData::add_back_pointer(), CIntervalManager::add_c_interval(), XFileNode::add_child(), CollisionTraverser::add_collider(), CollisionHandlerPhysical::add_collider(), EggXfmSAnim::add_data(), CharacterJointBundle::add_node(), NonlinearImager::add_screen(), EggGroupNode::apply_first_attribute(), EggGroupNode::apply_last_attribute(), DeferredNodeProperty::apply_to_node(), RecorderController::begin_playback(), NodePath::clear_clip_plane(), EggGroupNode::clear_connected_shading(), NodePath::clear_light(), EggBase::convert_paths(), NodePath::decode_from_bam_stream(), VrpnClient::disconnect_device(), PhysicsManager::do_physics(), GraphicsStateGuardian::fetch_specified_part(), EggRenderState::fill_state(), AnimBundleNode::find_anim_bundle(), EggGroupNode::find_coordsys_entry(), XFile::find_data_object(), Character::find_joint(), EggGroupNode::find_materials(), Character::find_slider(), XFile::find_template(), EggGroupNode::find_textures(), EggMaterialCollection::find_used_materials(), EggTextureCollection::find_used_textures(), EggGroupNode::force_filenames(), EggJointData::force_initial_rest_frame(), WindowFramework::get_aspect_2d(), EggPoolUniquifier::get_category(), EggGroupUniquifier::get_category(), EggGroupNode::get_connected_shading(), PandaFramework::get_mouse(), FactoryParams::get_param_of_type(), EggGroupNode::has_absolute_pathnames(), NodePath::has_clip_plane(), NodePath::has_clip_plane_off(), NodePath::has_light(), PandaFramework::hide_collision_solids(), x11GraphicsWindow::open_window(), eglGraphicsWindow::open_window(), EggNode::parse_egg(), CharacterMaker::part_to_node(), EggGroupNode::post_apply_flat_attribute(), EggBinner::prepare_node(), PortalClipper::prepare_portal(), NodePath::project_texture(), EggMatrixTablePointer::quantize_channels(), ParametricCurveCollection::r_add_curves(), SceneGraphReducer::r_collect_vertex_data(), EggGroupNode::r_load_externals(), EggGroupNode::rebuild_vertex_pools(), EggGroupNode::recompute_polygon_normals(), EggGroupNode::remove_invalid_primitives(), EggGroupNode::remove_unused_vertices(), EggLoader::reparent_decals(), EggMaterialCollection::replace_materials(), EggTextureCollection::replace_textures(), EggGroupNode::resolve_filenames(), EggGroupNode::reverse_vertex_ordering(), NodePath::set_clip_plane(), NodePath::set_clip_plane_off(), NodePath::set_light(), ProjectionScreen::set_projector(), NonlinearImager::set_source_camera(), EggXfmSAnim::set_value(), NonlinearImager::set_viewer_camera(), PandaFramework::show_collision_solids(), BamCache::store(), XFileToEggConverter::strip_nodes(), EggGroupNode::strip_normals(), DataGraphTraverser::traverse(), DataGraphTraverser::traverse_below(), EggGroupNode::triangulate_polygons(), EggGroupNode::unify_attributes(), EggNameUniquifier::uniquify(), NodeCullCallbackData::upcall(), PhysicsCollisionHandler::validate_target(), EggXfmSAnim::write(), EggGroup::write(), EggToDXFLayer::write_3d_face(), and EggToDXFLayer::write_entities().

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 1184 of file texture.cxx.

References PreparedGraphicsObjects::is_texture_queued().

Referenced by PreparedGraphicsObjects::is_texture_prepared().

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 1833 of file texture.cxx.

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 275 of file texture.I.

References do_load_one().

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

Replaces the texture with the indicated image.

Definition at line 255 of file texture.I.

References consider_auto_process_ram_image(), do_clear(), do_load_one(), and uses_mipmaps().

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 735 of file texture.cxx.

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

void ReferenceCount::local_object ( ) [inline, inherited]

This function should be called, once, immediately after creating a new instance of some ReferenceCount-derived object on the stack.

This allows the object to be passed to functions that will increment and decrement the object's reference count temporarily, and it will prevent the object from being deleted (inappropriately), when the reference count returns to zero. It actually achieves this by setting a large positive value in the reference count field.

Definition at line 276 of file referenceCount.I.

Referenced by PGTop::cull_callback(), BoundingSphere::extend_by_hexahedron(), AsyncTaskManager::find_task(), AsyncTaskManager::find_tasks(), and AsyncTaskManager::find_tasks_matching().

TypedWritable * Texture::make_from_bam ( const FactoryParams params) [static, protected]
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 1238 of file texture.I.

References do_make_ram_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 1468 of file texture.I.

void TypedWritable::mark_bam_modified ( ) [inline, inherited]
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 1071 of file texture.I.

References do_has_ram_image().

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

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 1197 of file texture.I.

References do_modify_ram_image().

Referenced by DXTextureContext9::d3d_surface_to_texture(), DXTextureContext8::d3d_surface_to_texture(), MovieVideoCursor::fetch_into_texture_alpha(), MovieVideoCursor::fetch_into_texture_rgb(), and TinyGraphicsStateGuardian::framebuffer_copy_to_ram().

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 1452 of file texture.I.

References do_modify_ram_mipmap_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 1016 of file texture.cxx.

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 1030 of file texture.cxx.

void Texture::operator= ( const Texture copy) [protected]

Use Texture::make_copy() to make a duplicate copy of an existing Texture.

Definition at line 244 of file texture.cxx.

References do_assign().

Referenced by Texture().

void Namable::output ( ostream &  out) const [inline, inherited]
void Texture::prepare ( PreparedGraphicsObjects prepared_objects)

Indicates that the texture should be enqueued to be prepared in the indicated prepared_objects at the beginning of the next frame.

This will ensure the texture is already loaded into texture memory if it is expected to be rendered soon.

Use this function instead of prepare_now() to preload textures from a user interface standpoint.

Definition at line 1172 of file texture.cxx.

References PreparedGraphicsObjects::enqueue_texture().

Referenced by GeomNode::r_prepare_scene().

TextureContext * Texture::prepare_now ( 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 1616 of file texture.cxx.

References PreparedGraphicsObjects::prepare_texture_now().

Referenced by PreparedGraphicsObjects::begin_frame(), DXGraphicsStateGuardian9::extract_texture_data(), DXGraphicsStateGuardian8::extract_texture_data(), TinyGraphicsStateGuardian::framebuffer_copy_to_texture(), DXGraphicsStateGuardian9::framebuffer_copy_to_texture(), DXGraphicsStateGuardian8::framebuffer_copy_to_texture(), wdxGraphicsBuffer9::select_cube_map(), and wdxGraphicsBuffer8::select_cube_map().

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

Reads the named filename into the texture.

Definition at line 411 of file texture.cxx.

References do_clear(), and do_read().

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 432 of file texture.cxx.

References do_clear(), and do_read().

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 = NULL,
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 535 of file texture.cxx.

References do_read().

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 455 of file texture.cxx.

References do_read().

bool Texture::read_dds ( istream &  in,
const string &  filename = "stream",
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 719 of file texture.cxx.

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

Reads the texture from 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 684 of file texture.cxx.

void Texture::reconsider_dirty ( ) [protected, virtual]

Called by TextureContext to give the Texture a chance to mark itself dirty before rendering, if necessary.

Reimplemented in VideoTexture.

Definition at line 1988 of file texture.cxx.

void ReferenceCount::ref ( ) const [inline, inherited]

Explicitly increments the reference count.

User code should avoid using ref() and unref() directly, which can result in missed reference counts. Instead, let a PointerTo object manage the reference counting automatically.

This function is const, even though it changes the object, because generally fiddling with an object's reference count isn't considered part of fiddling with the object. An object might be const in other ways, but we still need to accurately count the number of references to it.

Definition at line 179 of file referenceCount.I.

References ReferenceCount::test_ref_count_integrity().

Referenced by CachedTypedWritableReferenceCount::cache_ref(), TypedWritable::decode_raw_from_bam_stream(), NodeCachedReferenceCount::node_ref(), NodeReferenceCount::node_ref(), BamCacheRecord::set_data(), CullableObject::set_draw_callback(), and ModelRoot::set_reference().

void Texture::register_with_read_factory ( ) [static]

Factory method to generate a Texture object.

Definition at line 6049 of file texture.cxx.

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

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 1282 of file texture.cxx.

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

Referenced by PreparedGraphicsObjects::release_texture().

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 1308 of file texture.cxx.

References PreparedGraphicsObjects::release_texture().

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 320 of file texture.I.

bool TypedWritable::require_fully_complete ( ) const [virtual, inherited]

Some objects require all of their nested pointers to have been completed before the objects themselves can be completed.

If this is the case, override this method to return true, and be careful with circular references (which would make the object unreadable from a bam file).

Reimplemented in GeomVertexData, ClipPlaneAttrib, and RenderEffects.

Definition at line 118 of file typedWritable.cxx.

void Texture::set_alpha_filename ( const Filename 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 1713 of file texture.I.

void Texture::set_alpha_fullpath ( const Filename 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 1766 of file texture.I.

void Texture::set_anisotropic_degree ( int  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.

Definition at line 679 of file texture.I.

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

void Texture::set_aux_data ( const string &  key,
TypedReferenceCount 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 639 of file texture.cxx.

void Texture::set_border_color ( const Colorf 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.

Definition at line 693 of file texture.I.

void Texture::set_component_type ( Texture::ComponentType  component_type) [inline]

Changes the data value for the texture components.

This implicitly sets component_width as well.

Definition at line 1841 of file texture.I.

Referenced by DXTextureContext9::extract_texture_data(), and DXTextureContext8::extract_texture_data().

void Texture::set_compression ( Texture::CompressionMode  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 718 of file texture.I.

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

void Texture::set_filename ( const Filename 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 1679 of file texture.I.

void Texture::set_format ( Texture::Format  format) [inline]

Changes the format value for the texture components.

This implicitly sets num_components as well.

Definition at line 1829 of file texture.I.

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

void Texture::set_fullpath ( const Filename 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 1739 of file texture.I.

void Texture::set_keep_ram_image ( bool  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 1271 of file texture.I.

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 1856 of file texture.I.

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 1881 of file texture.I.

void Texture::set_match_framebuffer_format ( bool  flag) [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 1926 of file texture.I.

Referenced by GraphicsOutput::add_render_texture().

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 1571 of file texture.cxx.

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 508 of file texture.I.

Referenced by MovieVideoCursor::setup_texture().

void Texture::set_post_load_store_cache ( bool  flag) [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 1955 of file texture.I.

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

void Texture::set_quality_level ( Texture::QualityLevel  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 927 of file texture.I.

Referenced by StaticTextFont::StaticTextFont().

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

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 829 of file texture.cxx.

References ConstPointerToArray< Element >::cast_non_const().

Referenced by DXTextureContext9::extract_texture_data(), and DXTextureContext8::extract_texture_data().

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 1486 of file texture.I.

Referenced by DXTextureContext9::extract_texture_data(), and DXTextureContext8::extract_texture_data().

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 962 of file texture.cxx.

Referenced by 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 988 of file texture.cxx.

References set_ram_mipmap_pointer().

void Texture::set_render_to_texture ( bool  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 741 of file texture.I.

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

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 1613 of file texture.I.

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 1548 of file texture.cxx.

References do_set_z_size(), get_textures_power_2(), and up_to_power_2().

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

void Texture::set_textures_power_2 ( AutoTextureScale  scale) [inline, static]

Set this flag to ATS_none, ATS_up, or ATS_down to control the scaling of textures.

Definition at line 2168 of file texture.I.

void Texture::set_wrap_w ( Texture::WrapMode  wrap) [inline]

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

Definition at line 638 of file texture.I.

void Texture::set_x_size ( int  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 1791 of file texture.I.

Referenced by DXTextureContext9::extract_texture_data(), and DXTextureContext8::extract_texture_data().

void Texture::set_y_size ( int  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 1804 of file texture.I.

Referenced by DXTextureContext9::extract_texture_data(), and DXTextureContext8::extract_texture_data().

void Texture::set_z_size ( int  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 1817 of file texture.I.

References do_set_z_size().

Referenced by DXTextureContext9::extract_texture_data(), and DXTextureContext8::extract_texture_data().

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.

Definition at line 89 of file texture.I.

References setup_texture().

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.

Definition at line 76 of file texture.I.

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.

Definition at line 101 of file texture.I.

Referenced by TinyGraphicsStateGuardian::framebuffer_copy_to_texture().

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.

Definition at line 114 of file texture.I.

References setup_texture().

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 142 of file texture.I.

References setup_texture().

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.

Definition at line 129 of file texture.I.

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.

Definition at line 155 of file texture.I.

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.

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 172 of file texture.I.

References 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]
bool Texture::store ( PNMImage pnmimage) const [inline]

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

Definition at line 292 of file texture.I.

References do_store_one().

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 304 of file texture.I.

References do_store_one().

Texture::FilterType Texture::string_filter_type ( const string &  string) [static]

Returns the FilterType value associated with the given string representation, or FT_invalid if the string does not match any known FilterType value.

Definition at line 1791 of file texture.cxx.

Texture::WrapMode Texture::string_wrap_mode ( const string &  string) [static]

Returns the WrapMode value associated with the given string representation, or WM_invalid if the string does not match any known WrapMode value.

Definition at line 1767 of file texture.cxx.

bool ReferenceCount::test_ref_count_integrity ( ) const [inline, inherited]
bool ReferenceCount::test_ref_count_nonzero ( ) const [inline, inherited]

Does some easy checks to make sure that the reference count isn't zero, or completely bogus.

Returns true if ok, false otherwise.

Definition at line 252 of file referenceCount.I.

References ReferenceCount::do_test_ref_count_nonzero().

Referenced by CopyOnWritePointer::test_ref_count_nonzero().

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 1711 of file texture.cxx.

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 1324 of file texture.I.

bool ReferenceCount::unref ( ) const [inline, virtual, inherited]

Explicitly decrements the reference count.

Note that the object will not be implicitly deleted by unref() simply because the reference count drops to zero. (Having a member function delete itself is problematic.) However, see the helper function unref_delete().

User code should avoid using ref() and unref() directly, which can result in missed reference counts. Instead, let a PointerTo object manage the reference counting automatically.

This function is const, even though it changes the object, because generally fiddling with an object's reference count isn't considered part of fiddling with the object. An object might be const in other ways, but we still need to accurately count the number of references to it.

The return value is true if the new reference count is nonzero, false if it is zero.

Reimplemented in GeomVertexArrayFormat, GeomVertexFormat, InternalName, RenderAttrib, RenderEffects, RenderState, and TransformState.

Definition at line 214 of file referenceCount.I.

References ReferenceCount::test_ref_count_integrity().

Referenced by CachedTypedWritableReferenceCount::cache_unref(), TypedWritable::decode_raw_from_bam_stream(), RenderEffect::finalize(), NodeCachedReferenceCount::node_unref(), NodeReferenceCount::node_unref(), TransformState::unref(), RenderState::unref(), RenderEffects::unref(), RenderAttrib::unref(), InternalName::unref(), GeomVertexFormat::unref(), and GeomVertexArrayFormat::unref().

int Texture::up_to_power_2 ( int  value) [static]

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

Definition at line 1638 of file texture.cxx.

Referenced by adjust_size(), osxGraphicsBuffer::open_buffer(), set_size_padded(), and MovieVideoCursor::setup_texture().

void TypedWritable::update_bam_nested ( BamWriter manager) [virtual, inherited]

Called by the BamWriter when this object has not itself been modified recently, but it should check its nested objects for updates.

Reimplemented in CFDoCullCommand, and PandaNode.

Definition at line 77 of file typedWritable.cxx.

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 913 of file texture.I.

References get_effective_minfilter(), and is_mipmap().

Referenced by do_read(), do_reload_ram_image(), estimate_texture_memory(), get_num_loadable_ram_mipmap_images(), and load().

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 1203 of file texture.cxx.

References TextureContext::was_image_modified().

void ReferenceCount::weak_ref ( WeakPointerToVoid ptv) [inline, inherited]

Adds the indicated PointerToVoid as a weak reference to this object.

Definition at line 321 of file referenceCount.I.

References WeakReferenceList::add_reference(), and ReferenceCount::get_weak_list().

void ReferenceCount::weak_unref ( WeakPointerToVoid ptv) [inline, inherited]

Removes the indicated PointerToVoid as a weak reference to this object.

It must have previously been added via a call to weak_ref().

Definition at line 334 of file referenceCount.I.

References WeakReferenceList::clear_reference(), and ReferenceCount::has_weak_list().

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 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 243 of file texture.I.

References do_write().

bool Texture::write ( const Filename fullpath) [inline]

Writes the texture to the named filename.

Definition at line 183 of file texture.I.

References do_write().

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

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

Definition at line 1340 of file texture.cxx.

References do_has_ram_image().

void Texture::write_datagram ( BamWriter manager,
Datagram me 
) [virtual]
bool Texture::write_txo ( ostream &  out,
const string &  filename = "stream" 
) const

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 701 of file texture.cxx.


The documentation for this class was generated from the following files:
 All Classes Functions Variables Enumerations