39 lines
1.1 KiB
C++
39 lines
1.1 KiB
C++
#include "IShaderParameterCollection.h"
|
|
|
|
|
|
struct ID3D10EffectVariable;
|
|
struct IShader;
|
|
struct IInternalShader;
|
|
struct IShaderParameter;
|
|
class BasisShaderParameterCollection
|
|
{
|
|
public:
|
|
BasisShaderParameterCollection();
|
|
~BasisShaderParameterCollection();
|
|
|
|
void UseParametersOnShader(IShader& argShader);
|
|
void SetShaderParameter(const string8& argParameterName, IShaderParameter& argParameter);
|
|
void RemoveShaderParameter(const string8& argParameterName);
|
|
void RemoveAllShaderParameters();
|
|
|
|
protected:
|
|
|
|
struct ShaderParameterPair
|
|
{
|
|
ShaderParameterPair(IShaderParameter& argShaderParameter, ID3D10EffectVariable* ar_EffectVariable_)
|
|
: Parameter(&argShaderParameter)
|
|
, TargetVariable(ar_EffectVariable_)
|
|
{}
|
|
|
|
IShaderParameter* Parameter;
|
|
ID3D10EffectVariable* TargetVariable;
|
|
};
|
|
|
|
typedef std::map<string8, IShaderParameter*> tk_StringToShaderParameter;
|
|
typedef std::vector<ShaderParameterPair> tk_ShaderParameterPairs;
|
|
typedef std::map<IInternalShader*, tk_ShaderParameterPairs> tk_ShaderToShaderParameter;
|
|
|
|
tk_ShaderToShaderParameter m_ShaderToParameterMap;
|
|
tk_StringToShaderParameter m_ParameterMap;
|
|
};
|