MeVisLabToolboxReference
MeVisLab/Standard/Sources/Inventor/SoShader/Inventor/misc/SoUniformParameterBase.h
Go to the documentation of this file.
00001 // **InsertLicense** code
00002 
00006 
00007 
00008 #ifndef _SO_UNIFORM_PARAMETER_BASE_
00009 #define _SO_UNIFORM_PARAMETER_BASE_
00010 
00011 #include "SoShaderSystem.h"
00012 #include <Inventor/SbString.h>
00013 
00014 #ifdef WIN32
00015 #  pragma warning( push )
00016 #  pragma warning( disable : 4100 )
00017 #endif
00018 
00020 SoEXTENDER class INVENTOR_SHADER_API SoUniformParameterBase
00021 {
00022   protected:
00023 
00025     SoUniformParameterBase();
00026 
00028     virtual ~SoUniformParameterBase();
00029 
00030   public:
00031 
00033     virtual int addTextureSampler(const SbString &name) { return 0; }
00034     
00035     // These functions are used to assign values to uniform parameter via OpenGL
00036     virtual void set1f(const SbString & /*name*/, const float   /*value*/) {}
00037     virtual void set2f(const SbString & /*name*/, const float * /*value*/) {}
00038     virtual void set3f(const SbString & /*name*/, const float * /*value*/) {}
00039     virtual void set4f(const SbString & /*name*/, const float * /*value*/) {}
00040     virtual void set2f(const SbString & /*name*/, const float /*value0*/, const float /*value1*/) {}
00041     virtual void set3f(const SbString & /*name*/, const float /*value0*/, const float /*value1*/, const float /*value2*/) {}
00042     virtual void set4f(const SbString & /*name*/, const float /*value0*/, const float /*value1*/, const float /*value2*/, const float /*value3*/) {}
00043 
00044     virtual void set1fv(const SbString & /*name*/, const int /*num*/, const float * /*value*/) {}
00045     virtual void set2fv(const SbString & /*name*/, const int /*num*/, const float * /*value*/) {}
00046     virtual void set3fv(const SbString & /*name*/, const int /*num*/, const float * /*value*/) {}
00047     virtual void set4fv(const SbString & /*name*/, const int /*num*/, const float * /*value*/) {}
00048 
00049     virtual void set1i(const SbString & /*name*/, const int32_t   /*value*/) {}
00050     virtual void set2i(const SbString & /*name*/, const int32_t * /*value*/) {}
00051     virtual void set2i(const SbString & /*name*/, const SbVec2s & /*value*/) {}
00052     virtual void set3i(const SbString & /*name*/, const int32_t * /*value*/) {}
00053     virtual void set3i(const SbString & /*name*/, const SbVec3s & /*value*/) {}
00054     virtual void set4i(const SbString & /*name*/, const int32_t * /*value*/) {}
00055 
00056     virtual void setMatrix3f(const SbString & /*name*/, const float * /*value*/, SbBool /*transpose*/ = FALSE) {}
00057     virtual void setMatrix4f(const SbString & /*name*/, const float * /*value*/, SbBool /*transpose*/ = FALSE) {}
00058 
00059   public:
00060 
00061     enum SamplerType {
00062       SAMPLER_1D,
00063       SAMPLER_2D,
00064       SAMPLER_3D,
00065       SAMPLER_CUBEMAP
00066     };
00067 
00068     // Provide additional information about the purpose of a uniform parameter. Those information
00069     // may be collected and analyzed by derived classes.
00070     virtual void setSamplerInfo(const SbString & /*name*/, SamplerType /*type*/, uint32_t /*texId*/) {}
00071 };
00072 
00073 #ifdef WIN32
00074 #  pragma warning( pop )
00075 #endif
00076 
00077 #endif // _SO_UNIFORM_PARAMETER_BASE_