00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028
00029
00030
00031
00032
00033
00034
00035
00036
00037
00038
00039 #ifndef _OSGREGISTERCOMBINERSCHUNK_H_
00040 #define _OSGREGISTERCOMBINERSCHUNK_H_
00041 #ifdef __sgi
00042 #pragma once
00043 #endif
00044
00045 #include <OSGConfig.h>
00046 #include <OSGWindow.h>
00047 #include <OSGGL.h>
00048 #include <OSGGLEXT.h>
00049
00050 #include <OSGRegisterCombinersChunkBase.h>
00051
00052 OSG_BEGIN_NAMESPACE
00053
00058 #define OSG_NUM_COMBINERS 8
00059
00060 class OSG_SYSTEMLIB_DLLMAPPING RegisterCombinersChunk : public RegisterCombinersChunkBase
00061 {
00062 private:
00063
00064 typedef RegisterCombinersChunkBase Inherited;
00065
00066
00067 public:
00068
00069
00073 virtual const StateChunkClass * getClass (void) const;
00074
00076
00080 inline static UInt32 getStaticClassId (void);
00081 inline static const StateChunkClass * getStaticClass (void);
00082
00084
00088 virtual void changed(BitVector whichField,
00089 UInt32 from);
00090
00092
00096 virtual void dump( UInt32 uiIndent = 0,
00097 const BitVector bvFlags = 0) const;
00098
00100
00104 virtual void activate (DrawActionBase * action, UInt32 index = 0);
00105
00106 virtual void changeFrom (DrawActionBase * action, StateChunk * old,
00107 UInt32 index = 0);
00108
00109 virtual void deactivate (DrawActionBase * action, UInt32 index = 0);
00110
00111 virtual bool isTransparent (void) const;
00112
00114
00118 virtual Real32 switchCost (StateChunk * chunk);
00119
00120 virtual bool operator < (const StateChunk &other) const;
00121
00122 virtual bool operator == (const StateChunk &other) const;
00123 virtual bool operator != (const StateChunk &other) const;
00124
00126
00130 void clearCombiners(void);
00131
00132 void clearCombiner(UInt16 which);
00133
00134 void setConstantColors(Color4f &color0, Color4f &color1);
00135
00136 void setCombinerColors(UInt16 which,
00137 Color4f &color0, Color4f &color1);
00138
00139 void setCombinerRGB(UInt16 which,
00140 GLenum ainput, GLenum amapping, GLenum acompusage,
00141 GLenum binput, GLenum bmapping, GLenum bcompusage,
00142 GLenum cinput, GLenum cmapping, GLenum ccompusage,
00143 GLenum dinput, GLenum dmapping, GLenum dcompusage,
00144 GLenum outputAB, GLenum outputCD, GLenum outputSum,
00145 GLenum scale, GLenum bias,
00146 GLboolean dotAB, GLboolean dotCD, GLboolean muxSum);
00147
00148 void setCombinerAlpha(UInt16 which,
00149 GLenum ainput, GLenum amapping, GLenum acompusage,
00150 GLenum binput, GLenum bmapping, GLenum bcompusage,
00151 GLenum cinput, GLenum cmapping, GLenum ccompusage,
00152 GLenum dinput, GLenum dmapping, GLenum dcompusage,
00153 GLenum outputAB, GLenum outputCD, GLenum outputSum,
00154 GLenum scale, GLenum bias,
00155 GLboolean muxSum);
00156
00157 void setFinalCombiner(
00158 GLenum ainput, GLenum amapping, GLenum acompusage,
00159 GLenum binput, GLenum bmapping, GLenum bcompusage,
00160 GLenum cinput, GLenum cmapping, GLenum ccompusage,
00161 GLenum dinput, GLenum dmapping, GLenum dcompusage,
00162 GLenum einput, GLenum emapping, GLenum ecompusage,
00163 GLenum finput, GLenum fmapping, GLenum fcompusage,
00164 GLenum ginput, GLenum gmapping, GLenum gcompusage);
00165
00167
00168 protected:
00169
00170
00171
00172
00176 RegisterCombinersChunk(void);
00177 RegisterCombinersChunk(const RegisterCombinersChunk &source);
00178
00180
00184 virtual ~RegisterCombinersChunk(void);
00185
00187
00191 void ensureSizes(void);
00192
00195
00196 static UInt32 _nvRegisterCombiners;
00197 static UInt32 _nvRegisterCombiners2;
00198
00199
00200 static UInt32 _funcCombinerParameterfv;
00201 static UInt32 _funcCombinerStageParameterfv;
00202 static UInt32 _funcCombinerInput;
00203 static UInt32 _funcCombinerOutput;
00204 static UInt32 _funcFinalCombinerInput;
00205
00206
00207 private:
00208
00209 friend class FieldContainer;
00210 friend class RegisterCombinersChunkBase;
00211
00212 static void initMethod(void);
00213
00214
00215 static StateChunkClass _class;
00216
00217
00218
00219 void operator =(const RegisterCombinersChunk &source);
00220 };
00221
00222 typedef RegisterCombinersChunk *RegisterCombinersChunkP;
00223
00224 OSG_END_NAMESPACE
00225
00226 #include <OSGRegisterCombinersChunkBase.inl>
00227 #include <OSGRegisterCombinersChunk.inl>
00228
00229 #define OSGREGISTERCOMBINERSCHUNK_HEADER_CVSID "@(#)$Id: $"
00230
00231 #endif