Ion
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Pages
ion::gfx::Sampler Class Reference

A Sampler object represents texture parameters that control how texture data is accessed in shaders. More...

#include "sampler.h"

Inheritance diagram for ion::gfx::Sampler:
Collaboration diagram for ion::gfx::Sampler:

Public Types

enum  Changes {
  kAutoMipmappingChanged = kNumBaseChanges,
  kCompareFunctionChanged,
  kCompareModeChanged,
  kMagFilterChanged,
  kMaxAnisotropyChanged,
  kMaxLodChanged,
  kMinFilterChanged,
  kMinLodChanged,
  kWrapRChanged,
  kWrapSChanged,
  kWrapTChanged,
  kNumChanges
}
 Changes that affect this resource. More...
 
enum  CompareFunction {
  kAlways,
  kEqual,
  kGreater,
  kGreaterOrEqual,
  kLess,
  kLessOrEqual,
  kNever,
  kNotEqual
}
 Texture comparison functions for depth textures. More...
 
enum  CompareMode {
  kCompareToTexture,
  kNone
}
 Texture comparison modes for depth textures. More...
 
enum  FilterMode {
  kNearest,
  kLinear,
  kNearestMipmapNearest,
  kNearestMipmapLinear,
  kLinearMipmapNearest,
  kLinearMipmapLinear
}
 Texture filter modes. More...
 
enum  WrapMode {
  kClampToEdge,
  kRepeat,
  kMirroredRepeat
}
 Texture filter modes. More...
 
enum  BaseChanges {
  kLabelChanged,
  kResourceChanged,
  kNumBaseChanges
}
 All ResourceHolders derived from this should start their own change enums from kNumBaseChanges. More...
 

Public Member Functions

 Sampler ()
 
void SetAutogenerateMipmapsEnabled (bool enable)
 Sets whether OpenGL should automatically generate mipmaps for this Sampler. More...
 
bool IsAutogenerateMipmapsEnabled () const
 Gets whether this Sampler should use mipmapping. The default is false. More...
 
void SetCompareMode (CompareMode mode)
 Sets/returns the comparison mode to use for the texture using this sampler. More...
 
CompareMode GetCompareMode () const
 
void SetCompareFunction (CompareFunction func)
 Sets/returns the comparison function to use when texture comparison is enabled, e.g., when this is used with a depth texture. More...
 
CompareFunction GetCompareFunction () const
 
void SetMaxAnisotropy (float aniso)
 Sets the maximum degree of anisotropy used when filtering textures. More...
 
float GetMaxAnisotropy () const
 Gets the maximum anisotropy parameter. The default is 1. More...
 
void SetMinFilter (const FilterMode &mode)
 Sets the minification mode. More...
 
FilterMode GetMinFilter () const
 Gets the minification mode. The default is kNearest. More...
 
void SetMagFilter (const FilterMode &mode)
 Sets the magnification mode. More...
 
FilterMode GetMagFilter () const
 Gets the magnification mode. The default is kNearest. More...
 
void SetMinLod (float lod)
 Sets the minimum level of detail parameter, which limits the selection of the highest resolution (lowest level) mipmap. More...
 
float GetMinLod () const
 Gets the minimum level of detail parameter. The default is -1000. More...
 
void SetMaxLod (float lod)
 Sets the maximum level of detail parameter, which limits the selection of the lowest resolution (highest level) mipmap. More...
 
float GetMaxLod () const
 Gets the maximum level of detail parameter. The default is 1000. More...
 
void SetWrapR (const WrapMode &mode)
 Sets the wrap along the r-coordinate (useful only for 3D textures). More...
 
WrapMode GetWrapR () const
 Gets the wrap along the r-coordinate. The default is kRepeat. More...
 
void SetWrapS (const WrapMode &mode)
 Sets the wrap along the s-coordinate. More...
 
WrapMode GetWrapS () const
 Gets the wrap along the s-coordinate. The default is kRepeat. More...
 
void SetWrapT (const WrapMode &mode)
 Sets the wrap along the t-coordinate. More...
 
WrapMode GetWrapT () const
 Gets the wrap along the t-coordinate. The default is kRepeat. More...
 
void SetResource (size_t index, ResourceKey key, ResourceBase *resource) const
 Sets the resource at the passed index and key. More...
 
ResourceBaseGetResource (size_t index, ResourceKey key) const
 Returns the Resource at the given index and key, or NULL if no resource was previously set at that location. More...
 
int GetResourceCount () const
 Returns the number of resources that this holder holds. More...
 
size_t GetGpuMemoryUsed () const
 Returns the total amount of GPU memory used by this Holder's resource. More...
 
const std::string & GetLabel () const
 Returns/sets the label of this. More...
 
void SetLabel (const std::string &label)
 
void AddReceiver (Notifier *receiver)
 Adds a Notifier to be notified. More...
 
void RemoveReceiver (Notifier *receiver)
 Removes a Notifier to be notified. More...
 
size_t GetReceiverCount () const
 Returns the number of Notifiers that will be notified. More...
 
const AllocatorPtr & GetAllocator () const
 Returns the Allocator that was used for the instance. More...
 
const AllocatorPtr & GetNonNullAllocator () const
 Return our allocator, or the default allocator if the instance was declared on the stack. More...
 
const AllocatorPtr & GetAllocatorForLifetime (AllocationLifetime lifetime) const
 Convenience function that returns the Allocator to use to allocate an object with a specific lifetime. More...
 
void * operator new (size_t size)
 The standard no-parameter new operator uses the default Allocator. More...
 
void * operator new (size_t size, AllocationLifetime lifetime)
 This overloaded version of the new operator uses the AllocationManager's default Allocator for the specified lifetime. More...
 
void * operator new (size_t size, const AllocatorPtr &allocator)
 This overloaded version of the new operator takes the Allocator to use directly as a parameter. More...
 
void * operator new (size_t size, const AllocatorPtr &allocator, void *ptr)
 Special operator new for using placement new with Allocatables. More...
 
void * operator new (size_t size, void *ptr)
 The placement new operator is defined conventionally. More...
 
void operator delete (void *ptr)
 Define the delete operator to use specialized functions dealing with an Allocator. More...
 
void operator delete (void *ptr, AllocationLifetime lifetime)
 Windows requires these (or it issues C4291 warnings). More...
 
void operator delete (void *ptr, const AllocatorPtr &allocator)
 
void operator delete (void *ptr, void *ptr2)
 The placement delete operator does nothing, as usual. More...
 
int GetRefCount () const
 GetRefCount() is part of the interface necessary for SharedPtr. More...
 

Protected Types

typedef WeakReferentPtr< NotifierNotifierPtr
 
typedef AllocVector< NotifierPtrNotifierPtrVector
 

Protected Member Functions

 ~Sampler () override
 The destructor is protected because all base::Referent classes must have protected or private destructors. More...
 
void OnChanged (int bit) const
 Forwards OnChanged to all resources. More...
 
const NotifierPtrVectorGetReceivers () const
 Returns the set of Notifiers that will be notified. More...
 
void Notify () const
 Notifies all contained Notifiers by calling their OnNotify(). More...
 
virtual void OnNotify (const Notifier *notifier)
 Subclasses can override this to provide custom behavior on notifications. More...
 

Detailed Description

A Sampler object represents texture parameters that control how texture data is accessed in shaders.

Definition at line 29 of file sampler.h.

Member Typedef Documentation

Definition at line 49 of file notifier.h.

typedef AllocVector<NotifierPtr> ion::base::Notifier::NotifierPtrVector
protectedinherited

Definition at line 50 of file notifier.h.

Member Enumeration Documentation

All ResourceHolders derived from this should start their own change enums from kNumBaseChanges.

Enumerator
kLabelChanged 
kResourceChanged 
kNumBaseChanges 

Definition at line 56 of file resourceholder.h.

Changes that affect this resource.

Enumerator
kAutoMipmappingChanged 
kCompareFunctionChanged 
kCompareModeChanged 
kMagFilterChanged 
kMaxAnisotropyChanged 
kMaxLodChanged 
kMinFilterChanged 
kMinLodChanged 
kWrapRChanged 
kWrapSChanged 
kWrapTChanged 
kNumChanges 

Definition at line 32 of file sampler.h.

Texture comparison functions for depth textures.

Enumerator
kAlways 
kEqual 
kGreater 
kGreaterOrEqual 
kLess 
kLessOrEqual 
kNever 
kNotEqual 

Definition at line 48 of file sampler.h.

Texture comparison modes for depth textures.

Enumerator
kCompareToTexture 
kNone 

Definition at line 60 of file sampler.h.

Texture filter modes.

Enumerator
kNearest 
kLinear 
kNearestMipmapNearest 

These are only usable with the minification filter.

kNearestMipmapLinear 
kLinearMipmapNearest 
kLinearMipmapLinear 

Definition at line 66 of file sampler.h.

Texture filter modes.

Enumerator
kClampToEdge 
kRepeat 
kMirroredRepeat 

Definition at line 77 of file sampler.h.

Constructor & Destructor Documentation

ion::gfx::Sampler::Sampler ( )

Definition at line 27 of file sampler.cc.

ion::gfx::Sampler::~Sampler ( )
overrideprotected

The destructor is protected because all base::Referent classes must have protected or private destructors.

Definition at line 42 of file sampler.cc.

Member Function Documentation

void ion::base::Notifier::AddReceiver ( Notifier receiver)
inherited

Adds a Notifier to be notified.

Does nothing if the receiver is NULL or is already in the receiver vector.

Definition at line 25 of file notifier.cc.

const AllocatorPtr& ion::base::Allocatable::GetAllocator ( ) const
inlineinherited

Returns the Allocator that was used for the instance.

This will be NULL if the instance was declared on the stack or created with normal placement new.

Definition at line 68 of file allocatable.h.

References allocator_.

Referenced by ion::base::DataContainer::CreateAndCopy(), ion::text::DynamicFontImage::FindContainingImageDataIndex(), and ion::text::DynamicFontImage::FindImageDataIndex().

const AllocatorPtr& ion::base::Allocatable::GetAllocatorForLifetime ( AllocationLifetime  lifetime) const
inlineinherited
CompareFunction ion::gfx::Sampler::GetCompareFunction ( ) const
inline

Definition at line 110 of file sampler.h.

CompareMode ion::gfx::Sampler::GetCompareMode ( ) const
inline

Definition at line 102 of file sampler.h.

size_t ion::gfx::ResourceHolder::GetGpuMemoryUsed ( ) const
inlineinherited

Returns the total amount of GPU memory used by this Holder's resource.

Definition at line 78 of file resourceholder.h.

const std::string& ion::gfx::ResourceHolder::GetLabel ( ) const
inlineinherited

Returns/sets the label of this.

Definition at line 89 of file resourceholder.h.

FilterMode ion::gfx::Sampler::GetMagFilter ( ) const
inline

Gets the magnification mode. The default is kNearest.

Definition at line 131 of file sampler.h.

float ion::gfx::Sampler::GetMaxAnisotropy ( ) const
inline

Gets the maximum anisotropy parameter. The default is 1.

Definition at line 117 of file sampler.h.

float ion::gfx::Sampler::GetMaxLod ( ) const
inline

Gets the maximum level of detail parameter. The default is 1000.

Definition at line 147 of file sampler.h.

FilterMode ion::gfx::Sampler::GetMinFilter ( ) const
inline

Gets the minification mode. The default is kNearest.

Definition at line 124 of file sampler.h.

float ion::gfx::Sampler::GetMinLod ( ) const
inline

Gets the minimum level of detail parameter. The default is -1000.

Definition at line 139 of file sampler.h.

const AllocatorPtr& ion::base::Allocatable::GetNonNullAllocator ( ) const
inlineinherited

Return our allocator, or the default allocator if the instance was declared on the stack.

Definition at line 72 of file allocatable.h.

References allocator_, and ion::base::AllocationManager::GetNonNullAllocator().

size_t ion::base::Notifier::GetReceiverCount ( ) const
inherited

Returns the number of Notifiers that will be notified.

Definition at line 71 of file notifier.cc.

const Notifier::NotifierPtrVector & ion::base::Notifier::GetReceivers ( ) const
protectedinherited

Returns the set of Notifiers that will be notified.

Definition at line 77 of file notifier.cc.

int ion::base::Shareable::GetRefCount ( ) const
inlineinherited

GetRefCount() is part of the interface necessary for SharedPtr.

Definition at line 34 of file shareable.h.

Referenced by ion::base::Notifier::RemoveReceiver().

ResourceBase * ion::gfx::ResourceHolder::GetResource ( size_t  index,
ResourceKey  key 
) const
inherited

Returns the Resource at the given index and key, or NULL if no resource was previously set at that location.

Definition at line 122 of file resourceholder.cc.

int ion::gfx::ResourceHolder::GetResourceCount ( ) const
inlineinherited

Returns the number of resources that this holder holds.

Note that this is not necessarily the number of indices that have non-NULL resources. This can be used as a fast trivial check to see if the holder has any resources.

Definition at line 73 of file resourceholder.h.

WrapMode ion::gfx::Sampler::GetWrapR ( ) const
inline

Gets the wrap along the r-coordinate. The default is kRepeat.

Definition at line 154 of file sampler.h.

WrapMode ion::gfx::Sampler::GetWrapS ( ) const
inline

Gets the wrap along the s-coordinate. The default is kRepeat.

Definition at line 161 of file sampler.h.

WrapMode ion::gfx::Sampler::GetWrapT ( ) const
inline

Gets the wrap along the t-coordinate. The default is kRepeat.

Definition at line 168 of file sampler.h.

bool ion::gfx::Sampler::IsAutogenerateMipmapsEnabled ( ) const
inline

Gets whether this Sampler should use mipmapping. The default is false.

Definition at line 93 of file sampler.h.

void ion::base::Notifier::Notify ( ) const
protectedinherited

Notifies all contained Notifiers by calling their OnNotify().

Any receivers that have been destroyed will be removed from the vector of receivers.

Definition at line 81 of file notifier.cc.

References ion::base::SharedPtr< T >::Get().

void ion::gfx::ResourceHolder::OnChanged ( int  bit) const
inlineprotectedinherited

Forwards OnChanged to all resources.

Definition at line 326 of file resourceholder.h.

void ion::base::Notifier::OnNotify ( const Notifier notifier)
protectedvirtualinherited

Subclasses can override this to provide custom behavior on notifications.

Definition at line 96 of file notifier.cc.

void ion::base::Allocatable::operator delete ( void *  ptr)
inlineinherited

Define the delete operator to use specialized functions dealing with an Allocator.

Definition at line 109 of file allocatable.h.

void ion::base::Allocatable::operator delete ( void *  ptr,
AllocationLifetime  lifetime 
)
inlineinherited

Windows requires these (or it issues C4291 warnings).

Definition at line 112 of file allocatable.h.

void ion::base::Allocatable::operator delete ( void *  ptr,
const AllocatorPtr allocator 
)
inlineinherited

Definition at line 113 of file allocatable.h.

void ion::base::Allocatable::operator delete ( void *  ptr,
void *  ptr2 
)
inlineinherited

The placement delete operator does nothing, as usual.

Definition at line 118 of file allocatable.h.

void* ion::base::Allocatable::operator new ( size_t  size)
inlineinherited

The standard no-parameter new operator uses the default Allocator.

Definition at line 84 of file allocatable.h.

void* ion::base::Allocatable::operator new ( size_t  size,
AllocationLifetime  lifetime 
)
inlineinherited

This overloaded version of the new operator uses the AllocationManager's default Allocator for the specified lifetime.

Definition at line 88 of file allocatable.h.

void* ion::base::Allocatable::operator new ( size_t  size,
const AllocatorPtr allocator 
)
inlineinherited

This overloaded version of the new operator takes the Allocator to use directly as a parameter.

If the Allocator pointer is NULL, this uses the default Allocator.

Definition at line 95 of file allocatable.h.

void* ion::base::Allocatable::operator new ( size_t  size,
const AllocatorPtr allocator,
void *  ptr 
)
inlineinherited

Special operator new for using placement new with Allocatables.

Definition at line 100 of file allocatable.h.

void* ion::base::Allocatable::operator new ( size_t  size,
void *  ptr 
)
inlineinherited

The placement new operator is defined conventionally.

Definition at line 105 of file allocatable.h.

void ion::base::Notifier::RemoveReceiver ( Notifier receiver)
inherited

Removes a Notifier to be notified.

Does nothing if the receiver is NULL or not in the set of receivers.

Definition at line 38 of file notifier.cc.

References ion::base::Shareable::GetRefCount().

Referenced by ion::gfx::AttributeArray::~AttributeArray().

void ion::gfx::Sampler::SetAutogenerateMipmapsEnabled ( bool  enable)
inline

Sets whether OpenGL should automatically generate mipmaps for this Sampler.

Any image set with SetMipmapImage() will override the automatically generated images. Calling this function is not necessary if setting a partial image pyramid.

Definition at line 89 of file sampler.h.

void ion::gfx::Sampler::SetCompareFunction ( CompareFunction  func)
inline

Sets/returns the comparison function to use when texture comparison is enabled, e.g., when this is used with a depth texture.

The default function is kLess.

Definition at line 107 of file sampler.h.

void ion::gfx::Sampler::SetCompareMode ( CompareMode  mode)
inline

Sets/returns the comparison mode to use for the texture using this sampler.

The default mode is kNone.

Definition at line 99 of file sampler.h.

void ion::gfx::ResourceHolder::SetLabel ( const std::string &  label)
inlineinherited

Definition at line 90 of file resourceholder.h.

void ion::gfx::Sampler::SetMagFilter ( const FilterMode mode)
inline

Sets the magnification mode.

Definition at line 127 of file sampler.h.

void ion::gfx::Sampler::SetMaxAnisotropy ( float  aniso)
inline

Sets the maximum degree of anisotropy used when filtering textures.

Definition at line 113 of file sampler.h.

void ion::gfx::Sampler::SetMaxLod ( float  lod)
inline

Sets the maximum level of detail parameter, which limits the selection of the lowest resolution (highest level) mipmap.

Definition at line 143 of file sampler.h.

void ion::gfx::Sampler::SetMinFilter ( const FilterMode mode)
inline

Sets the minification mode.

Definition at line 120 of file sampler.h.

void ion::gfx::Sampler::SetMinLod ( float  lod)
inline

Sets the minimum level of detail parameter, which limits the selection of the highest resolution (lowest level) mipmap.

Definition at line 135 of file sampler.h.

void ion::gfx::ResourceHolder::SetResource ( size_t  index,
ResourceKey  key,
ResourceBase resource 
) const
inherited

Sets the resource at the passed index and key.

The size of the internal vector is automatically managed so that it has the smallest possible size.

Definition at line 51 of file resourceholder.cc.

References DCHECK, DCHECK_EQ, ion::gfx::ResourceBase::GetKey(), and ion::gfx::ResourceBase::OnChanged().

void ion::gfx::Sampler::SetWrapR ( const WrapMode mode)
inline

Sets the wrap along the r-coordinate (useful only for 3D textures).

Definition at line 150 of file sampler.h.

void ion::gfx::Sampler::SetWrapS ( const WrapMode mode)
inline

Sets the wrap along the s-coordinate.

Definition at line 157 of file sampler.h.

void ion::gfx::Sampler::SetWrapT ( const WrapMode mode)
inline

Sets the wrap along the t-coordinate.

Definition at line 164 of file sampler.h.


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