Gizmo3D

gzShader.h

Go to the documentation of this file.
00001 //*****************************************************************************
00002 // File         : gzShader.h
00003 // Module       : 
00004 // Description  : Class definition of the gzShader class
00005 // Author       : Anders Modén      
00006 // Product      : Gizmo3D 2.1.1
00007 //      
00008 // Copyright © 2003- Saab Training Systems AB, Sweden   
00009 //          
00010 // NOTE:    Gizmo3D is a high performance 3D Scene Graph and effect visualisation 
00011 //          C++ toolkit for Linux, Mac OS X, Windows (Win32) and IRIX® for  
00012 //          usage in Game or VisSim development.
00013 //
00014 //
00015 // Revision History...                          
00016 //                                  
00017 // Who  Date    Description                     
00018 //                                  
00019 // AMO  020618  Created file    
00020 //
00021 //******************************************************************************
00022 #ifndef __GZ_SHADER_H__
00023 #define __GZ_SHADER_H__
00024 
00031 #include "gzObject.h"
00032 #include "gzMatrix.h"
00033 #include "gzImage.h"
00034 
00035 // Forwards...
00036 class gzContext;
00037 class gzGFXProgram;
00038 class gzState;
00039 
00041 enum gzGFXProgramType   { 
00042                             GZ_GFX_VERTEX_PROGRAM           =0 , 
00043                             GZ_GFX_GEOMETRY_PROGRAM         =1 ,
00044                             GZ_GFX_FRAGMENT_PROGRAM         =2 , 
00045                             GZ_GFX_SOFTWARE_PROGRAM         =3 , 
00046                             GZ_GFX_GLOBAL                   =4 ,    // For uniform attribs
00047                         };
00048 
00049 const gzULong GZ_NUMBER_OF_GFX_PROGRAM_TYPES = 4; 
00050 
00051 // ----------------------- Defined global parameters ----------------------
00052 
00053 const gzString  GZ_GFX_GLOBAL_ENABLED_LIGHTS        = "gz_EnabledLights";   // bool[8]  for each lamp
00054 const gzString  GZ_GFX_GLOBAL_ENABLED_LIGHT         = "gz_EnabledLight";    // bool     for all lamps
00055 const gzString  GZ_GFX_GLOBAL_RENDER_TIME           = "gz_RenderTime";      // float    seconds in current day
00056 const gzString  GZ_GFX_GLOBAL_RENDER_DAY            = "gz_RenderDay";       // float    days since 1 jan 1990 
00057 const gzString  GZ_GFX_GLOBAL_WIN_WIDTH             = "gz_WinWidth";        // float    width of rendering window  
00058 const gzString  GZ_GFX_GLOBAL_WIN_HEIGHT            = "gz_WinHeight";       // float    height of rendering window  
00059 
00060 //******************************************************************************
00061 // Class    : gzParameterUpdateInfo
00062 //                                  
00063 // Purpose  : Keep bind info about global updates per context
00064 //                                  
00065 // Notes    : - 
00066 //                                  
00067 // Revision History...                          
00068 //                                  
00069 // Who  Date    Description                     
00070 //                                  
00071 // AMO  030422  Created 
00072 //                                  
00073 //******************************************************************************
00074 class gzParameterUpdateInfo
00075 {
00076 public:
00077 
00078     gzParameterUpdateInfo():updateID(0),contextEnumerator(0xFFFFUL),attribIndexID(0){};
00079 
00080     gzULong                         updateID;
00081     gzULong                         contextEnumerator;
00082     gzULong                         attribIndexID;
00083 };
00084 
00085 
00086 //******************************************************************************
00087 // Class    : gzGFXProgramManager
00088 //                                  
00089 // Purpose  : -
00090 //                                  
00091 // Notes    : - 
00092 //                                  
00093 // Revision History...                          
00094 //                                  
00095 // Who  Date    Description                     
00096 //                                  
00097 // AMO  030204  Created 
00098 //                                  
00099 //******************************************************************************
00100 class gzGFXProgramManager : public gzReference
00101 {
00102 public:
00103 
00104     GZ_DECLARE_TYPE_INTERFACE_EXPORT(GZ_GRAPH_EXPORT);  // typed interface
00105 
00106     GZ_GRAPH_EXPORT virtual             ~gzGFXProgramManager(){};
00107 
00108     GZ_GRAPH_EXPORT gzULong             getVersion()    { return m_version;     }
00109 
00110     GZ_GRAPH_EXPORT virtual gzBool      isManagerFor(gzGFXProgram *program)=0;
00111 
00112     GZ_GRAPH_EXPORT virtual gzBool      activate(gzContext *context,gzGFXProgram *program,gzGFXProgramType type)=0;
00113 
00114     GZ_GRAPH_EXPORT virtual gzBool      deactivate(gzContext *context,gzGFXProgram *program,gzGFXProgramType type)=0; 
00115 
00116     GZ_GRAPH_EXPORT virtual gzVoid      cleanUpContext(gzContext *context){};
00117 
00118     GZ_GRAPH_EXPORT virtual gzVoid      resetProgram(gzGFXProgram *program){};
00119 
00120     GZ_GRAPH_EXPORT virtual gzVoid      deleteProgram(gzGFXProgram *program){};
00121 
00122     // ------ statics -------------
00123 
00124     GZ_GRAPH_EXPORT static gzVoid       registerManager(gzGFXProgramManager *manager);
00125 
00126     GZ_GRAPH_EXPORT static gzVoid       unregisterManagers();
00127 
00128     GZ_GRAPH_EXPORT static gzGFXProgramManager * getManagerForProgram(gzGFXProgram *program);
00129 
00130     GZ_GRAPH_EXPORT static gzVoid       cleanUpGFXData(gzContext *context);
00131 
00132 protected:
00133 
00134     GZ_GRAPH_EXPORT virtual gzVoid      registerManager()=0;
00135 
00136     static gzRefList<gzGFXProgramManager> s_registeredGFXProgramManagers;
00137 
00138     gzULong             m_version;
00139 
00140 };
00141 
00142 enum gzGFXProgramParameterType
00143 {
00144     GZ_GFX_PARAM_INTEGER,
00145     GZ_GFX_PARAM_FLOAT,
00146     GZ_GFX_PARAM_VEC2,
00147     GZ_GFX_PARAM_IVEC2,
00148     GZ_GFX_PARAM_VEC3,
00149     GZ_GFX_PARAM_IVEC3,
00150     GZ_GFX_PARAM_VEC4,
00151     GZ_GFX_PARAM_IVEC4,
00152     GZ_GFX_PARAM_MAT2,
00153     GZ_GFX_PARAM_MAT3,
00154     GZ_GFX_PARAM_MAT4
00155 };
00156 
00157 union gzFloatInt
00158 {
00159     gzFloat fVal;
00160     gzInt   iVal;
00161 };
00162 
00163 class gzGFXProgramParameter : public gzReference
00164 {
00165 public:
00166 
00167     virtual ~gzGFXProgramParameter(){}
00168 
00169     gzString                    name;
00170     gzUInt                      position;
00171     gzBool                      usePosition;
00172     gzGFXProgramParameterType   type;
00173 
00174     gzArray<gzFloatInt>         values;
00175 };
00176 
00177 class gzGlobalGFXProgramParams
00178 {
00179 public:
00180 
00181     gzRefList<gzGFXProgramParameter>        params;
00182     gzDynamicArray<gzParameterUpdateInfo>   updateInfo;
00183 };
00184 
00185 class gzVertexAttributeIndex : public gzReference
00186 {
00187 public:
00188 
00189     virtual ~gzVertexAttributeIndex(){};
00190 
00191     gzString        name;
00192     gzUInt          index;
00193 };
00194 
00195 //----------------- Special Create Attributes --------------
00196 
00197 const gzString GZ_GFX_PROGRAM_SETTINGS                  =   "GZ_GFX_PROGRAM_SETTINGS";
00198 
00199 //---------------- Special for geometry programs ----------
00200 
00201 const gzString GZ_GFX_GEOMETRY_PROGRAM_INPUT_TYPE       =   "GZ_GFX_GEOMETRY_PROGRAM_INPUT_TYPE";
00202 const gzString GZ_GFX_GEOMETRY_PROGRAM_OUTPUT_TYPE      =   "GZ_GFX_GEOMETRY_PROGRAM_OUTPUT_TYPE";
00203 const gzString GZ_GFX_GEOMETRY_PROGRAM_VERTICES_OUT     =   "GZ_GFX_GEOMETRY_PROGRAM_VERTICES_OUT";
00204 
00205 
00206 //******************************************************************************
00207 // Class    : gzGFXProgram
00208 //                                  
00209 // Purpose  : -
00210 //                                  
00211 // Notes    : - 
00212 //                                  
00213 // Revision History...                          
00214 //                                  
00215 // Who  Date    Description                     
00216 //                                  
00217 // AMO  020618  Created 
00218 //                                  
00219 //******************************************************************************
00220 class gzGFXProgram : public gzObject 
00221 {
00222 public:
00223     GZ_DECLARE_TYPE_INTERFACE_EXPORT(GZ_GRAPH_EXPORT);  // typed interface
00224 
00225     GZ_GRAPH_EXPORT gzGFXProgram();
00226 
00227     GZ_GRAPH_EXPORT virtual ~gzGFXProgram();
00228 
00229     GZ_GRAPH_EXPORT virtual gzBool  activate(gzContext *context,gzGFXProgramType type);
00230 
00231     GZ_GRAPH_EXPORT virtual gzBool  deactivate(gzContext *context,gzGFXProgramType type); 
00232 
00233     // ---------- Clone interface ---------------------------------------
00234     GZ_GRAPH_EXPORT virtual gzReference* clone() const;
00235     GZ_GRAPH_EXPORT virtual gzBool  useDeepCopy();
00236 
00237     // ---------- gzGFXProgram interface --------------------------------------
00238 
00240     GZ_GRAPH_EXPORT gzVoid              setProgramScript(const gzString &script);
00241 
00243     GZ_GRAPH_EXPORT gzBool              loadProgramScript(const gzString &url);
00244 
00246     GZ_GRAPH_EXPORT const gzString  &   getProgramScript();
00247 
00249     GZ_GRAPH_EXPORT gzGFXProgramManager *getCurrentManager() { return m_manager.get(); }
00250 
00252     GZ_GRAPH_EXPORT gzBool              hasError();
00253     
00255     GZ_GRAPH_EXPORT const gzString &    getError();
00256     
00258     GZ_GRAPH_EXPORT gzInt               getErrorPos();  
00259     
00261     GZ_GRAPH_EXPORT gzVoid              setError(const gzString & error,gzInt pos);
00262 
00263 
00264     GZ_GRAPH_EXPORT gzVoid              setManagerData(gzReference *data);
00265     GZ_GRAPH_EXPORT gzReference *       getManagerData();
00266 
00268     GZ_GRAPH_EXPORT gzVoid              setFallbackProgram(gzGFXProgram *program);
00269     GZ_GRAPH_EXPORT gzGFXProgram *      getFallbackProgram();
00270 
00271     // ---------- Vertex Attributes --------------------------------------------
00272 
00273     GZ_GRAPH_EXPORT gzVoid  bindVertexAttribute(const gzString &name, gzUInt index); 
00274     GZ_GRAPH_EXPORT gzUInt  getVertexAttributeIndex(const gzString &name);
00275     GZ_GRAPH_EXPORT const gzRefList<gzVertexAttributeIndex> & getVertexAttributeIndexList();
00276 
00277 
00278     // ---------- Index Local Attributes ---------------------------------------
00279 
00280     GZ_GRAPH_EXPORT gzVoid  setLocalParameter(gzUInt index,const gzFloat &val,gzBool integer=FALSE);
00281     GZ_GRAPH_EXPORT gzVoid  setLocalParameter(gzUInt index,const gzVec2 &val);
00282     GZ_GRAPH_EXPORT gzVoid  setLocalParameter(gzUInt index,const gzVec3 &val);
00283     GZ_GRAPH_EXPORT gzVoid  setLocalParameter(gzUInt index,const gzVec4 &val);
00284     GZ_GRAPH_EXPORT gzVoid  setLocalParameter(gzUInt index,const gzMatrix2 &val);
00285     GZ_GRAPH_EXPORT gzVoid  setLocalParameter(gzUInt index,const gzMatrix3 &val);
00286     GZ_GRAPH_EXPORT gzVoid  setLocalParameter(gzUInt index,const gzMatrix4 &val);
00287 
00288     GZ_GRAPH_EXPORT const gzGFXProgramParameter * getLocalParameter(gzUInt index,gzGFXProgramParameterType type, gzBool update=FALSE);
00289 
00290     GZ_GRAPH_EXPORT const gzRefList<gzGFXProgramParameter> & getLocalParameterList();
00291 
00292     // ---------- Named Local Attributes ---------------------------------------
00293 
00294     GZ_GRAPH_EXPORT gzVoid  setLocalParameter(const gzString &name,const gzFloat &val,gzBool integer=FALSE);
00295     GZ_GRAPH_EXPORT gzVoid  setLocalParameter(const gzString &name,const gzVec2 &val);
00296     GZ_GRAPH_EXPORT gzVoid  setLocalParameter(const gzString &name,const gzVec3 &val);
00297     GZ_GRAPH_EXPORT gzVoid  setLocalParameter(const gzString &name,const gzVec4 &val);
00298     GZ_GRAPH_EXPORT gzVoid  setLocalParameter(const gzString &name,const gzMatrix2 &val);
00299     GZ_GRAPH_EXPORT gzVoid  setLocalParameter(const gzString &name,const gzMatrix3 &val);
00300     GZ_GRAPH_EXPORT gzVoid  setLocalParameter(const gzString &name,const gzMatrix4 &val);
00301 
00302     GZ_GRAPH_EXPORT const gzGFXProgramParameter * getLocalParameter(const gzString &name,gzGFXProgramParameterType type,gzBool update=FALSE);
00303 
00304     GZ_GRAPH_EXPORT gzParameterUpdateInfo & getLocalUpdateInfo(gzULong contextID);
00305 
00306     GZ_GRAPH_EXPORT gzVoid  useGlobalProgramScripts(gzBool on);
00307     GZ_GRAPH_EXPORT gzBool  useGlobalProgramScripts();
00308 
00309     // ----------- Globals ----------------------------------------------------
00310 
00311     static GZ_GRAPH_EXPORT gzParameterUpdateInfo & getGlobalUpdateInfo(gzULong contextID,gzGFXProgramType type=GZ_GFX_GLOBAL);
00312 
00313     // ---------- Index Global Attributes ---------------------------------------
00314 
00315     static GZ_GRAPH_EXPORT gzVoid   setGlobalParameter(gzUInt index,const gzFloat &val,gzBool integer=FALSE,gzGFXProgramType type=GZ_GFX_GLOBAL);
00316     static GZ_GRAPH_EXPORT gzVoid   setGlobalParameter(gzUInt index,const gzVec2 &val,gzGFXProgramType type=GZ_GFX_GLOBAL);
00317     static GZ_GRAPH_EXPORT gzVoid   setGlobalParameter(gzUInt index,const gzVec3 &val,gzGFXProgramType type=GZ_GFX_GLOBAL);
00318     static GZ_GRAPH_EXPORT gzVoid   setGlobalParameter(gzUInt index,const gzVec4 &val,gzGFXProgramType type=GZ_GFX_GLOBAL);
00319     static GZ_GRAPH_EXPORT gzVoid   setGlobalParameter(gzUInt index,const gzMatrix2 &val,gzGFXProgramType type=GZ_GFX_GLOBAL);
00320     static GZ_GRAPH_EXPORT gzVoid   setGlobalParameter(gzUInt index,const gzMatrix3 &val,gzGFXProgramType type=GZ_GFX_GLOBAL);
00321     static GZ_GRAPH_EXPORT gzVoid   setGlobalParameter(gzUInt index,const gzMatrix4 &val,gzGFXProgramType type=GZ_GFX_GLOBAL);
00322 
00323     static GZ_GRAPH_EXPORT const gzGFXProgramParameter * getGlobalParameter(gzUInt index,gzGFXProgramParameterType type,gzGFXProgramType programType=GZ_GFX_GLOBAL,gzBool update=FALSE);
00324 
00325     static GZ_GRAPH_EXPORT const gzRefList<gzGFXProgramParameter> & getGlobalParameterList(gzGFXProgramType type=GZ_GFX_GLOBAL);
00326 
00327     // ---------- Named Global Attributes ---------------------------------------
00328 
00329     static GZ_GRAPH_EXPORT gzVoid   setGlobalParameter(const gzString &name,const gzFloat &val,gzBool integer=FALSE,gzGFXProgramType type=GZ_GFX_GLOBAL);
00330     static GZ_GRAPH_EXPORT gzVoid   setGlobalParameter(const gzString &name,const gzVec2 &val,gzGFXProgramType type=GZ_GFX_GLOBAL);
00331     static GZ_GRAPH_EXPORT gzVoid   setGlobalParameter(const gzString &name,const gzVec3 &val,gzGFXProgramType type=GZ_GFX_GLOBAL);
00332     static GZ_GRAPH_EXPORT gzVoid   setGlobalParameter(const gzString &name,const gzVec4 &val,gzGFXProgramType type=GZ_GFX_GLOBAL);
00333     static GZ_GRAPH_EXPORT gzVoid   setGlobalParameter(const gzString &name,const gzMatrix2 &val,gzGFXProgramType type=GZ_GFX_GLOBAL);
00334     static GZ_GRAPH_EXPORT gzVoid   setGlobalParameter(const gzString &name,const gzMatrix3 &val,gzGFXProgramType type=GZ_GFX_GLOBAL);
00335     static GZ_GRAPH_EXPORT gzVoid   setGlobalParameter(const gzString &name,const gzMatrix4 &val,gzGFXProgramType type=GZ_GFX_GLOBAL);
00336     static GZ_GRAPH_EXPORT gzVoid   setGlobalParameter(const gzString &name,const gzBool (&val)[8],gzGFXProgramType type=GZ_GFX_GLOBAL);
00337 
00338     static GZ_GRAPH_EXPORT const gzGFXProgramParameter * getGlobalParameter(const gzString &name,gzGFXProgramParameterType type,gzGFXProgramType programType=GZ_GFX_GLOBAL,gzBool update=FALSE);
00339 
00340     // ---------- Global program scripts ----------------------------------------
00341 
00342     static GZ_GRAPH_EXPORT gzVoid                       setGlobalProgramScript(gzGFXProgramType type , gzULong index,const gzString &script);
00343     static GZ_GRAPH_EXPORT gzDynamicArray<gzString> &   getGlobalProgramScripts(gzGFXProgramType type,gzBool update=FALSE);
00344     static GZ_GRAPH_EXPORT gzULong                      getGlobalProgramScriptUpdateID(gzGFXProgramType type);
00345 
00346     // ---------- Generic program scripts ---------------------------------------
00347 
00348     static GZ_GRAPH_EXPORT gzGFXProgram *getProgram(const gzString &name,gzGFXProgramType type);
00349     static GZ_GRAPH_EXPORT gzVoid registerProgram(const gzString &name,gzGFXProgramType type,gzGFXProgram *program);
00350     static GZ_GRAPH_EXPORT gzVoid unregisterProgram(const gzString &name,gzGFXProgramType type,gzGFXProgram *program);
00351 
00352 private:
00353 
00354     gzString                                    m_script;
00355                                                 
00356     gzRefPointer<gzGFXProgramManager>           m_manager;
00357                                             
00358     gzBool                                      m_hasError:1;
00359 
00360     gzBool                                      m_useGlobalProgramScripts:1;
00361                                                 
00362     gzInt                                       m_errorPos;
00363 
00364     gzString                                    m_error;
00365                                                 
00366     gzRefList<gzGFXProgramParameter>            m_params;
00367 
00368     gzRefList<gzVertexAttributeIndex>           m_vertexAttributeIndex;
00369 
00370     gzDynamicArray<gzParameterUpdateInfo>       m_updateInfo;
00371 
00372     gzRefPointer<gzReference>                   m_managerData;
00373 
00374     gzRefPointer<gzGFXProgram>                  m_fallbackProgram;
00375 
00376     static gzGlobalGFXProgramParams             s_globalEnvParams[GZ_NUMBER_OF_GFX_PROGRAM_TYPES+1];
00377 
00378     static gzDynamicArray<gzString>             s_globalProgramScripts[GZ_NUMBER_OF_GFX_PROGRAM_TYPES];
00379 
00380     static gzULong                              s_globalProgramScriptsUpdateID[GZ_NUMBER_OF_GFX_PROGRAM_TYPES];
00381 
00382     static gzRefDict<gzString,gzGFXProgram>     s_registeredPrograms[GZ_NUMBER_OF_GFX_PROGRAM_TYPES];
00383 };
00384 
00385 
00386 //******************************************************************************
00387 // Class    : gzGFXProgramManager_VFP_1
00388 //                                  
00389 // Purpose  : Vertex and Fragment program manager low level (ARB VP & FP)
00390 //                                  
00391 // Notes    : - 
00392 //                                  
00393 // Revision History...                          
00394 //                                  
00395 // Who  Date    Description                     
00396 //                                  
00397 // AMO  030204  Created 
00398 //                                  
00399 //******************************************************************************
00400 class gzGFXProgramManager_VFP_1 : public gzGFXProgramManager
00401 {
00402 public:
00403 
00404     GZ_DECLARE_TYPE_INTERFACE_EXPORT(GZ_GRAPH_EXPORT);  // typed interface
00405 
00406     GZ_GRAPH_EXPORT                 gzGFXProgramManager_VFP_1();
00407 
00408     GZ_GRAPH_EXPORT virtual         ~gzGFXProgramManager_VFP_1();
00409 
00410     GZ_GRAPH_EXPORT virtual gzBool  isManagerFor(gzGFXProgram *program);
00411 
00412     GZ_GRAPH_EXPORT virtual gzBool  activate(gzContext *context,gzGFXProgram *program,gzGFXProgramType type);
00413 
00414     GZ_GRAPH_EXPORT virtual gzBool  deactivate(gzContext *context,gzGFXProgram *program,gzGFXProgramType type); 
00415 
00416     GZ_GRAPH_EXPORT virtual gzVoid  cleanUpContext(gzContext *context);
00417 
00418     GZ_GRAPH_EXPORT virtual gzVoid  resetProgram(gzGFXProgram *program);
00419 
00420     GZ_GRAPH_EXPORT virtual gzVoid  deleteProgram(gzGFXProgram *program);
00421 
00422 protected:
00423 
00424     GZ_GRAPH_EXPORT virtual gzVoid  registerManager();
00425 
00426 private:
00427 
00428     static gzQueue<gzUInt>                          s_deleteBindID;
00429 
00430     static gzDynamicArray<gzParameterUpdateInfo>    s_updateInfo[GZ_NUMBER_OF_GFX_PROGRAM_TYPES];
00431 };  
00432 
00433 //******************************************************************************
00434 // Class    : gzGFXProgramManager_GLSL_VS_1
00435 //                                  
00436 // Purpose  : Shader manager for GLSL
00437 //                                  
00438 // Notes    : - 
00439 //                                  
00440 // Revision History...                          
00441 //                                  
00442 // Who  Date    Description                     
00443 //                                  
00444 // AMO  040421  Created 
00445 //                                  
00446 //******************************************************************************
00447 class gzGFXProgramManager_GLSL_1 : public gzGFXProgramManager
00448 {
00449 public:
00450 
00451     GZ_DECLARE_TYPE_INTERFACE_EXPORT(GZ_GRAPH_EXPORT);  // typed interface
00452 
00453     GZ_GRAPH_EXPORT                 gzGFXProgramManager_GLSL_1();
00454 
00455     GZ_GRAPH_EXPORT virtual         ~gzGFXProgramManager_GLSL_1(){};
00456 
00457     GZ_GRAPH_EXPORT virtual gzBool  isManagerFor(gzGFXProgram *program);
00458 
00459     GZ_GRAPH_EXPORT virtual gzBool  activate(gzContext *context,gzGFXProgram *program,gzGFXProgramType type);
00460 
00461     GZ_GRAPH_EXPORT virtual gzBool  deactivate(gzContext *context,gzGFXProgram *program,gzGFXProgramType type); 
00462 
00463     GZ_GRAPH_EXPORT virtual gzVoid  cleanUpContext(gzContext *context);
00464 
00465     GZ_GRAPH_EXPORT virtual gzVoid  resetProgram(gzGFXProgram *program);
00466 
00467     GZ_GRAPH_EXPORT virtual gzVoid  deleteProgram(gzGFXProgram *program);
00468 
00469 protected:
00470 
00471     GZ_GRAPH_EXPORT virtual gzVoid  registerManager();
00472 
00473     GZ_GRAPH_EXPORT gzVoid setUniform(gzInt index,gzGFXProgramParameter *parameter);
00474 
00475 private:
00476 
00477     static gzQueue<gzHandle>                        s_deleteHandles;
00478 };  
00479 
00480 GZ_GRAPH_EXPORT gzVoid gzInitializeGFXProgramManagers();
00481 GZ_GRAPH_EXPORT gzVoid gzUninitializeGFXProgramManagers();
00482 
00483 // ----------------------- BuiltIn Programs -------------------
00484 
00485 const gzString GZ_ALPHA_NORMAL_VP   =   "GZ_ALPHA_NORMAL_VP";   
00486 
00487 const gzString GZ_PHONG_VP          =   "GZ_PHONG_VP";          
00488 const gzString GZ_PHONG_FP          =   "GZ_PHONG_FP";          
00489 
00490 // ----------------------- BuiltIn Generic States ------------
00491 
00492 GZ_GRAPH_EXPORT gzState * gzGetBuiltInState_Phong();
00493 
00494 #endif

Documentation for Gizmo3D generated at Wed Feb 20 11:54:09 2008 by   Saab Training Systems AB, ¸ (c) 2003-and beyond