54 lines
3.3 KiB
C++
54 lines
3.3 KiB
C++
#pragma once
|
|
|
|
#include "BasisParameterCollection.h"
|
|
#include "IShaderParameterCollection.h"
|
|
#include "../Commands/CommandUserBase.h"
|
|
|
|
|
|
struct IEngine;
|
|
class ShaderParameterCollection
|
|
: public IShaderParameterCollection
|
|
, public CommandUserBase
|
|
{
|
|
static const unsigned char SetShaderParameterCollectionCommandType = 0;
|
|
static const unsigned char SetFollowingShaderParameterCollectionCommandType = 1;
|
|
public:
|
|
ShaderParameterCollection(IEngine& argEngine, unsigned char argBasePriority = 4);
|
|
virtual ~ShaderParameterCollection();
|
|
|
|
virtual void Uninitialize();
|
|
|
|
// IShaderParameterCollection
|
|
virtual bool get_IsPreconditionForFollowingShaders() const;
|
|
virtual void set_IsPreconditionForFollowingShaders(bool argValue);
|
|
|
|
virtual void SetParameter(const string8& argParameterName,IShaderParameter* ar_Parameter_);
|
|
virtual void SetParameter(const string8& argParameterName, ITexture& argParameter, ParameterBindType::Enumeration argParamNameType = ParameterBindType::BindBySemantic);
|
|
virtual void SetParameter(const string8& argParameterName, float* af_Parameter_, ParameterBindType::Enumeration argParamNameType = ParameterBindType::BindBySemantic);
|
|
virtual void SetParameter(const string8& argParameterName, float argParameter, ParameterBindType::Enumeration argParamNameType = ParameterBindType::BindBySemantic);
|
|
virtual void SetParameter(const string8& argParameterName, D3DXVECTOR4* ar_Parameter_, ParameterBindType::Enumeration argParamNameType = ParameterBindType::BindBySemantic);
|
|
virtual void SetParameter(const string8& argParameterName, const D3DXVECTOR4& argParameter, ParameterBindType::Enumeration argParamNameType = ParameterBindType::BindBySemantic);
|
|
virtual void SetParameter(const string8& argParameterName, D3DXVECTOR3* ar_Parameter_, ParameterBindType::Enumeration argParamNameType = ParameterBindType::BindBySemantic);
|
|
virtual void SetParameter(const string8& argParameterName, const D3DXVECTOR3& argParameter, ParameterBindType::Enumeration argParamNameType = ParameterBindType::BindBySemantic);
|
|
virtual void SetParameter(const string8& argParameterName, D3DXMATRIX* argParameter, ParameterBindType::Enumeration argParamNameType = ParameterBindType::BindBySemantic);
|
|
virtual void SetParameter(const string8& argParameterName, const D3DXMATRIX& argParameter, ParameterBindType::Enumeration argParamNameType = ParameterBindType::BindBySemantic);
|
|
virtual void SetParameter(const string8& argParameterName, bool* ab_Parameter_, ParameterBindType::Enumeration argParamNameType = ParameterBindType::BindBySemantic);
|
|
virtual void SetParameter(const string8& argParameterName, bool argParameter, ParameterBindType::Enumeration argParamNameType = ParameterBindType::BindBySemantic);
|
|
virtual void RemoveParameter(const string8& argParameterName);
|
|
|
|
protected:
|
|
// ICommandUser
|
|
virtual CommandExecuteResult::Enumeration ExecuteCommand(unsigned char argCommandType, ICommandBuffer& argCurrentBuffer, uint32 argCurrentPositon);
|
|
virtual bool get_IsPreconditionForNextCommands() const { return m_IsPreconditionForFollowingShaders; }
|
|
virtual string8 get_UserName() const { return "ShaderParameterCollection"; }
|
|
|
|
void UseOnShader(IShader& argShader);
|
|
|
|
protected:
|
|
IEngine& m_Engine;
|
|
|
|
BasisShaderParameterCollection m_BasisShaderParameterCollection;
|
|
bool m_IsPreconditionForFollowingShaders;
|
|
unsigned char m_BasePriority;
|
|
};
|