4 #include <unordered_map>
13 using std::unordered_map;
30 unordered_map<string, LightingShaderImplementation*>
shaders;
119 void setShader(
int contextIdx,
const string&
id);
126 void bindTexture(
int contextIdx, int32_t textureId);
143 auto shaderIt =
shaders.find(shaderId);
144 if (shaderIt ==
shaders.end())
return nullptr;
145 return shaderIt->second;
Interface to lighting shader program.
LightingShaderImplementation * getShader(const string &shaderId)
Returns shader for given shader id.
void initialize()
Initialize.
void unloadTextures()
Unload textures.
void updateLight(int contextIdx, int32_t lightId)
Update light to program.
void updateMatrices(int contextIdx)
Update matrices to program.
void updateEffect(int contextIdx)
Update effect to program.
bool hasShader(const string &shaderId)
Returns if shader with given shader id does exist.
vector< LightingShaderContext > contexts
~LightingShader()
Destructor.
void useProgram(Engine *engine)
Use lighting program.
void setShader(int contextIdx, const string &id)
Set shader.
void updateTextureMatrix(int contextIdx)
Update texture matrix to program.
void updateShaderParameters(int contextIdx)
Update shader parameters.
LightingShader(Renderer *renderer)
Public constructor.
void updateMaterial(int contextIdx)
Update material to program.
void bindTexture(int contextIdx, int32_t textureId)
Bind texture.
void loadTextures(const string &pathName)
Load textures.
unordered_map< string, LightingShaderImplementation * > shaders
void unUseProgram()
Unuse lighting program.
Lighting shader implementation interface.
LightingShaderImplementation * implementation
#define FORBID_CLASS_COPY(CLASS)