28#ifndef __HighLevelGpuProgram_H__
29#define __HighLevelGpuProgram_H__
GpuProgram(ResourceManager *creator, const String &name, ResourceHandle handle, const String &group, bool isManual=false, ManualResourceLoader *loader=0)
GpuProgramParametersSharedPtr createParameters(void)
Creates a new parameters object compatible with this program definition.
bool mConstantDefsBuilt
Have we built the name->index parameter map yet?
void loadImpl()
Internal implementation of the meat of the 'load' action, only called if this resource is not being l...
virtual void unloadHighLevel(void)
Internal unload high-level portion if loaded.
virtual size_t calculateSize(void) const
Calculate the size of a resource; this will only be called after 'load'.
GpuProgramPtr mAssemblerProgram
The underlying assembler program.
virtual void loadHighLevel(void)
Internal load high-level portion if not loaded.
virtual void createLowLevelImpl(void)=0
Internal method for creating an appropriate low-level program from this high-level program,...
virtual void populateParameterNames(GpuProgramParametersSharedPtr params)
Populate the passed parameters with name->index map.
const GpuNamedConstants & getNamedConstants() const
Override GpuProgram::getNamedConstants to ensure built.
virtual void unloadHighLevelImpl(void)=0
Internal unload implementation, must be implemented by subclasses.
HighLevelGpuProgram(ResourceManager *creator, const String &name, ResourceHandle handle, const String &group, bool isManual=false, ManualResourceLoader *loader=0)
Constructor, should be used only by factory classes.
virtual void buildConstantDefinitions() const =0
Build the constant definition map, must be overridden.
GpuProgram * _getBindingDelegate(void)
Returns the GpuProgram which should be bound to the pipeline.
const GpuNamedConstants & getConstantDefinitions() const
Get the full list of GpuConstantDefinition instances.
bool mHighLevelLoaded
Whether the high-level program (and it's parameter defs) is loaded.
void unloadImpl()
Internal implementation of the 'unload' action; called regardless of whether this resource is being l...
virtual void loadHighLevelImpl(void)
Internal load implementation, loads just the high-level portion, enough to get parameters.
Interface describing a manual resource loader.
Defines a generic resource handler.
SharedPtr< GpuProgramParameters > GpuProgramParametersSharedPtr
Shared pointer used to hold references to GpuProgramParameters instances.
SharedPtr< GpuProgram > GpuProgramPtr
unsigned long long int ResourceHandle
Struct collecting together the information for named constants.