| OGRE 1.11.1 Object-Oriented Graphics Rendering Engine

Public Member Functions | List of all members
OgreBites::SGTechniqueResolverListener Class Referenceabstract

This class demonstrates basic usage of the RTShader system. More...

`#include <OgreSGTechniqueResolverListener.h>`

Inheritance diagram for OgreBites::SGTechniqueResolverListener:
[legend]

## Public Member Functions
| SGTechniqueResolverListener (Ogre::RTShader::ShaderGenerator *pShaderGenerator)
bool | afterIlluminationPassesCreated (Ogre::Technique *tech)
| Called right after illuminated passes were created, so that owner of runtime generated technique can handle this. More...
bool | beforeIlluminationPassesCleared (Ogre::Technique *tech)
| Called right before illuminated passes would be removed, so that owner of runtime generated technique can handle this. More...
Ogre::Technique * | handleSchemeNotFound (unsigned short schemeIndex, const Ogre::String &schemeName, Ogre::Material *originalMaterial, unsigned short lodIndex, const Ogre::Renderable *rend)
| This is the hook point where shader based technique will be created. More...
virtual Technique * | handleSchemeNotFound (unsigned short schemeIndex, const String &schemeName, Material *originalMaterial, unsigned short lodIndex, const Renderable *rend)=0
| Called if a technique for a given scheme is not found within a material, allows the application to specify a Technique instance manually. More...

## Detailed Description

This class demonstrates basic usage of the RTShader system.

It sub class the material manager listener class and when a target scheme callback is invoked with the shader generator scheme it tries to create an equivalent shader based technique based on the default technique of the given material.

## Constructor & Destructor Documentation

## ◆ SGTechniqueResolverListener()

OgreBites::SGTechniqueResolverListener::SGTechniqueResolverListener | ( | Ogre::RTShader::ShaderGenerator * | pShaderGenerator | ) |
| explicit

## Member Function Documentation

## ◆ handleSchemeNotFound() [1/2]

Ogre::Technique* OgreBites::SGTechniqueResolverListener::handleSchemeNotFound | ( | unsigned short | schemeIndex,
|  | const Ogre::String & | schemeName,
|  | Ogre::Material * | originalMaterial,
|  | unsigned short | lodIndex,
|  | const Ogre::Renderable * | rend
| ) |  |

This is the hook point where shader based technique will be created.

It will be called whenever the material manager won't find appropriate technique that satisfy the target scheme name. If the scheme name is out target RT Shader System scheme name we will try to create shader generated technique for it.

## ◆ afterIlluminationPassesCreated()

bool OgreBites::SGTechniqueResolverListener::afterIlluminationPassesCreated | ( | Ogre::Technique * | technique | ) |
| virtual

Called right after illuminated passes were created, so that owner of runtime generated technique can handle this.

Returns
  True if notification is handled and should not be propagated further.

Reimplemented from Ogre::MaterialManager::Listener.

## ◆ beforeIlluminationPassesCleared()

bool OgreBites::SGTechniqueResolverListener::beforeIlluminationPassesCleared | ( | Ogre::Technique * | technique | ) |
| virtual

Called right before illuminated passes would be removed, so that owner of runtime generated technique can handle this.

Returns
  True if notification is handled and should not be propagated further.

Reimplemented from Ogre::MaterialManager::Listener.

## ◆ handleSchemeNotFound() [2/2]

virtual Technique* Ogre::MaterialManager::Listener::handleSchemeNotFound | ( | unsigned short | schemeIndex,
|  | const String & | schemeName,
|  | Material * | originalMaterial,
|  | unsigned short | lodIndex,
|  | const Renderable * | rend
| ) |  |
| pure virtual inherited

Called if a technique for a given scheme is not found within a material, allows the application to specify a Technique instance manually.

Remarks
  Material schemes allow you to switch wholesale between families of techniques on a material. However they require you to define those schemes on the materials up-front, which might not be possible or desirable for all materials, particular if, for example, you wanted a simple way to replace all materials with another using a scheme.

  This callback allows you to handle the case where a scheme is requested but the material doesn't have an entry for it. You can return a Technique pointer from this method to specify the material technique you'd like to be applied instead, which can be from another material entirely (and probably will be). Note that it is critical that you only return a Technique that is supported on this hardware; there are utility methods like Material::getBestTechnique to help you with this.

Parameters

  schemeIndex | The index of the scheme that was requested - all schemes have a unique index when created that does not alter.
  schemeName | The friendly name of the scheme being requested
  originalMaterial | The material that is being processed, that didn't have a specific technique for this scheme
  lodIndex | The material level-of-detail that was being asked for, in case you need to use it to determine a technique.
  rend | Pointer to the Renderable that is requesting this technique to be used, so this may influence your choice of Technique. May be null if the technique isn't being requested in that context.

Returns
  A pointer to the technique to be used, or NULL if you wish to use the default technique for this material

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

- OgreSGTechniqueResolverListener.h