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

ShaderManager contains an association between shader programs, their names, and any source dependencies they have. More...

#include "shadermanager.h"

Inheritance diagram for ion::gfxutils::ShaderManager:
Collaboration diagram for ion::gfxutils::ShaderManager:

Public Member Functions

 ShaderManager ()
 
const gfx::ShaderProgramPtr CreateShaderProgram (const std::string &name, const ion::gfx::ShaderInputRegistryPtr &registry, const ShaderSourceComposerPtr &vertex_source_composer, const ShaderSourceComposerPtr &fragment_source_composer)
 Creates and returns a ShaderProgram with the passed name using the passed composers and registry. More...
 
const gfx::ShaderProgramPtr GetShaderProgram (const std::string &name)
 Returns a ReferentPtr to a ShaderProgram that has the passed name. More...
 
const std::vector< std::string > GetShaderProgramNames ()
 Gets a vector of the names of the shader programs created through the manager. More...
 
void GetShaderProgramComposers (const std::string &name, ShaderSourceComposerPtr *vertex_source_composer, ShaderSourceComposerPtr *fragment_source_composer)
 Gets the composers used to construct the named program's shaders. More...
 
void RecreateAllShaderPrograms ()
 Reconstructs all shaders from their composers. More...
 
void RecreateShaderProgramsThatDependOn (const std::string &dependency)
 Reconstructs all shaders that depend on the named dependency. 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...
 

Detailed Description

ShaderManager contains an association between shader programs, their names, and any source dependencies they have.

Definition at line 38 of file shadermanager.h.

Constructor & Destructor Documentation

ion::gfxutils::ShaderManager::ShaderManager ( )

Definition at line 179 of file shadermanager.cc.

Member Function Documentation

const ShaderProgramPtr ion::gfxutils::ShaderManager::CreateShaderProgram ( const std::string &  name,
const ion::gfx::ShaderInputRegistryPtr registry,
const ShaderSourceComposerPtr vertex_source_composer,
const ShaderSourceComposerPtr fragment_source_composer 
)

Creates and returns a ShaderProgram with the passed name using the passed composers and registry.

Definition at line 184 of file shadermanager.cc.

References ion::base::Allocatable::GetAllocatorForLifetime(), and ion::base::kMediumTerm.

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

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

const ShaderProgramPtr ion::gfxutils::ShaderManager::GetShaderProgram ( const std::string &  name)

Returns a ReferentPtr to a ShaderProgram that has the passed name.

If no program with the passed name exists, returns a NULL ShaderProgramPtr.

Definition at line 208 of file shadermanager.cc.

void ion::gfxutils::ShaderManager::GetShaderProgramComposers ( const std::string &  name,
ShaderSourceComposerPtr vertex_source_composer,
ShaderSourceComposerPtr fragment_source_composer 
)

Gets the composers used to construct the named program's shaders.

Either of the passed pointers may be NULL. If the named program does not exist then the passed composers will be set to NULL.

Definition at line 217 of file shadermanager.cc.

const std::vector< std::string > ion::gfxutils::ShaderManager::GetShaderProgramNames ( )

Gets a vector of the names of the shader programs created through the manager.

Definition at line 213 of file shadermanager.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::gfxutils::ShaderManager::RecreateAllShaderPrograms ( )

Reconstructs all shaders from their composers.

Definition at line 225 of file shadermanager.cc.

void ion::gfxutils::ShaderManager::RecreateShaderProgramsThatDependOn ( const std::string &  dependency)

Reconstructs all shaders that depend on the named dependency.

The passed dependency name could be a filename or some other identifier that a ShaderSourceComposer will recognize.

Definition at line 229 of file shadermanager.cc.


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