Go to the documentation of this file.00001
00002
00003
00004
00005
00006
00007
00008 #ifndef __SP_SHADER_CONSTANT_BUFFER_H__
00009 #define __SP_SHADER_CONSTANT_BUFFER_H__
00010
00011
00012 #include "Base/spStandard.hpp"
00013 #include "Base/spInputOutputString.hpp"
00014 #include "Base/spMaterialConfigTypes.hpp"
00015
00016
00017 namespace sp
00018 {
00019 namespace video
00020 {
00021
00022
00023 class ShaderClass;
00024
00035 class SP_EXPORT ConstantBuffer
00036 {
00037
00038 public:
00039
00049 ConstantBuffer(ShaderClass* Owner, const io::stringc &Name, u32 Index);
00050 virtual ~ConstantBuffer();
00051
00052
00053
00062 virtual bool updateBuffer(const void* Buffer, u32 Size = 0);
00063
00065 virtual bool valid() const;
00066
00075 void setBufferUsage(const EHWBufferUsage Usage);
00076
00077
00078
00080 inline const io::stringc& getName() const
00081 {
00082 return Name_;
00083 }
00084
00089 inline u32 getSize() const
00090 {
00091 return Size_;
00092 }
00093
00095 inline u32 getIndex() const
00096 {
00097 return Index_;
00098 }
00099
00101 inline EHWBufferUsage getBufferUsage() const
00102 {
00103 return Usage_;
00104 }
00105
00107 inline ShaderClass* getShaderClass() const
00108 {
00109 return Shader_;
00110 }
00111
00112 protected:
00113
00114
00115
00116 ShaderClass* Shader_;
00117
00118 EHWBufferUsage Usage_;
00119 bool HasUsageChanged_;
00120
00121 u32 Size_;
00122
00123 private:
00124
00125
00126
00127 io::stringc Name_;
00128 u32 Index_;
00129
00130 };
00131
00132
00133 }
00134
00135 }
00136
00137
00138 #endif
00139
00140
00141
00142