TAPs 0.7.7.3
TAPsModelDeformableGLSL_Visualization_RTGenMesh.hpp
Go to the documentation of this file.
00001 /******************************************************************************
00002 TAPsModelDeformableGLSL_Visualization_RTGenMesh.hpp
00003 ******************************************************************************/
00008 /******************************************************************************
00009 SUKITTI PUNAK   (05/28/2007)
00010 UPDATE          (08/03/2007)
00011 ******************************************************************************/
00012 #ifndef TAPs_MODEL_DEFORMABLE_GLSL_VISUALIZATION_RT_GEN_MESH_HPP
00013 #define TAPs_MODEL_DEFORMABLE_GLSL_VISUALIZATION_RT_GEN_MESH_HPP
00014 
00015 //#include "../GLSL/TAPsGLSLFns.hpp"
00016 #include "TAPsModelDeformableGLSL.hpp"
00017 
00018 #include <TAPs/CG/TAPsPNTriangle.hpp>
00019 
00020 //=============================================================================
00021 //-----------------------------------------------------------------------------
00026 //-----------------------------------------------------------------------------
00027 //#define TAPs_DEFORMABLE_MODEL_VISUALIZATION_ON_CPU
00028 //#define TAPs_DEFORMABLE_MODEL_VISUALIZATION_ON_GPU    // Default
00029 //-----------------------------------------------------------------------------
00030 #if defined   ( TAPs_DEFORMABLE_MODEL_VISUALIZATION_ON_CPU )
00031     #define TAPs_MODEL_DEFORMABLE_VISUALIZATION_RT_GEN_MESH_USE_CPU_RENDERING
00032 #elif defined ( TAPs_DEFORMABLE_MODEL_VISUALIZATION_ON_GPU )
00033     #define TAPs_MODEL_DEFORMABLE_VISUALIZATION_RT_GEN_MESH_USE_GPU_RENDERING
00034 #else
00035     #define TAPs_MODEL_DEFORMABLE_VISUALIZATION_RT_GEN_MESH_USE_GPU_RENDERING
00036 #endif
00037 //-----------------------------------------------------------------------------
00038 
00039 //-----------------------------------------------------------------------------
00044 //-----------------------------------------------------------------------------
00045 //#define TAPs_DEFORMABLE_MODEL_VISUALIZATION_NOT_USE_BUFFERS
00046 //#define TAPs_DEFORMABLE_MODEL_VISUALIZATION_USE_BUFFERS           // Default
00047 //-----------------------------------------------------------------------------
00048 #ifdef TAPs_MODEL_DEFORMABLE_VISUALIZATION_RT_GEN_MESH_USE_GPU_RENDERING
00049     #if defined   ( TAPs_DEFORMABLE_MODEL_VISUALIZATION_NOT_USE_BUFFERS )
00050         #define TAPs_MODEL_DEFORMABLE_VISUALIZATION_RT_GEN_MESH_NOT_USE_BUFFERS // Not Implemented Yet, maybe never be implemented!
00051     #elif defined ( TAPs_DEFORMABLE_MODEL_VISUALIZATION_USE_BUFFERS )
00052         #define TAPs_MODEL_DEFORMABLE_VISUALIZATION_RT_GEN_MESH_USE_BUFFERS
00053     #else
00054         #define TAPs_MODEL_DEFORMABLE_VISUALIZATION_RT_GEN_MESH_USE_BUFFERS
00055     #endif
00056 #endif // TAPs_MODEL_DEFORMABLE_VISUALIZATION_RT_GEN_MESH_USE_GPU_RENDERING
00057 //-----------------------------------------------------------------------------
00058 
00059 //-----------------------------------------------------------------------------
00070 //-----------------------------------------------------------------------------
00071 //#define TAPs_DEFORMABLE_MODEL_VISUALIZATION_GPU_MARCHING_CUBES_GRADIENT_FACES
00072 //#define TAPs_DEFORMABLE_MODEL_VISUALIZATION_GPU_MARCHING_CUBES_GRADIENT_VERTICES
00073 //#define TAPs_DEFORMABLE_MODEL_VISUALIZATION_GPU_MARCHING_CUBES_GRADIENT_EDGES
00074 //#define TAPs_DEFORMABLE_MODEL_VISUALIZATION_GPU_MARCHING_CUBES_GRADIENT_SELECTABLE    // Default
00075 //-----------------------------------------------------------------------------
00076 #ifdef TAPs_MODEL_DEFORMABLE_VISUALIZATION_RT_GEN_MESH_USE_GPU_RENDERING
00077 #ifdef TAPs_MODEL_DEFORMABLE_NOT_USE_GRADIENT_TEXTURE
00078     #if !defined ( TAPs_DEFORMABLE_MODEL_VISUALIZATION_GPU_MARCHING_CUBES_GRADIENT_SELECTABLE )
00079         #if defined ( TAPs_DEFORMABLE_MODEL_VISUALIZATION_GPU_MARCHING_CUBES_GRADIENT_FACES )
00080             #define TAPs_MODEL_DEFORMABLE_VISUALIZATION_RT_GEN_MESH_USE_GPU_MC_GRADIENT_FACES
00081         #endif
00082         #if defined ( TAPs_DEFORMABLE_MODEL_VISUALIZATION_GPU_MARCHING_CUBES_GRADIENT_VERTICES )
00083             #define TAPs_MODEL_DEFORMABLE_VISUALIZATION_RT_GEN_MESH_USE_GPU_MC_GRADIENT_VERTICES
00084         #endif
00085         #if defined ( TAPs_DEFORMABLE_MODEL_VISUALIZATION_GPU_MARCHING_CUBES_GRADIENT_EDGES )
00086             #define TAPs_MODEL_DEFORMABLE_VISUALIZATION_RT_GEN_MESH_USE_GPU_MC_GRADIENT_EDGES
00087         #endif
00088 
00089         #if !defined ( TAPs_MODEL_DEFORMABLE_VISUALIZATION_RT_GEN_MESH_USE_GPU_MC_GRADIENT_FACES )    && \
00090             !defined ( TAPs_MODEL_DEFORMABLE_VISUALIZATION_RT_GEN_MESH_USE_GPU_MC_GRADIENT_VERTICES ) && \
00091             !defined ( TAPs_MODEL_DEFORMABLE_VISUALIZATION_RT_GEN_MESH_USE_GPU_MC_GRADIENT_EDGES )
00092             #define TAPs_MODEL_DEFORMABLE_VISUALIZATION_RT_GEN_MESH_USE_GPU_MC_GRADIENT_SELECTABLE
00093         #endif
00094     #else
00095         #define TAPs_MODEL_DEFORMABLE_VISUALIZATION_RT_GEN_MESH_USE_GPU_MC_GRADIENT_SELECTABLE
00096     #endif
00097 #endif // TAPs_MODEL_DEFORMABLE_NOT_USE_GRADIENT_TEXTURE
00098 #endif // TAPs_MODEL_DEFORMABLE_VISUALIZATION_RT_GEN_MESH_USE_GPU_RENDERING
00099 //-----------------------------------------------------------------------------
00100 
00101 //-----------------------------------------------------------------------------
00108 //-----------------------------------------------------------------------------
00109 //#define TAPs_DEFORMABLE_MODEL_VISUALIZATION_GPU_MARCHING_CUBES_WITH_PNTRIANGLES
00110 //#define TAPs_DEFORMABLE_MODEL_VISUALIZATION_GPU_MARCHING_CUBES_WITHOUT_PNTRIANGLES    // Default
00111 //-----------------------------------------------------------------------------
00112 #ifdef TAPs_MODEL_DEFORMABLE_VISUALIZATION_RT_GEN_MESH_USE_GPU_RENDERING
00113     #if defined   ( TAPs_DEFORMABLE_MODEL_VISUALIZATION_GPU_MARCHING_CUBES_WITH_PNTRIANGLES )
00114         #define TAPs_MODEL_DEFORMABLE_VISUALIZATION_RT_GEN_MESH_USE_GPU_MC_WITH_PNTRI
00115     #elif defined ( TAPs_DEFORMABLE_MODEL_VISUALIZATION_GPU_MARCHING_CUBES_WITHOUT_PNTRIANGLES )
00116         #define TAPs_MODEL_DEFORMABLE_VISUALIZATION_RT_GEN_MESH_USE_GPU_MC_WITHOUT_PNTRI
00117     #else
00118         #define TAPs_MODEL_DEFORMABLE_VISUALIZATION_RT_GEN_MESH_USE_GPU_MC_WITHOUT_PNTRI
00119     #endif
00120 #endif
00121 //-----------------------------------------------------------------------------
00122 //-----------------------------------------------------------------------------
00129 //#define TAPs_DEFORMABLE_MODEL_VISUALIZATION_GPU_1X1X1_MARCHING_CUBES      // Default
00130 //#define TAPs_DEFORMABLE_MODEL_VISUALIZATION_GPU_2X2X2_MARCHING_CUBES      // Current implementation does not give a correct result
00131 //#define TAPs_DEFORMABLE_MODEL_VISUALIZATION_GPU_4X4X4_MARCHING_CUBES      // Currently cannot be implemented
00132 //#define TAPs_DEFORMABLE_MODEL_VISUALIZATION_GPU_SUBCUBE_BY_TWO
00133 //-----------------------------------------------------------------------------
00134 #ifdef TAPs_MODEL_DEFORMABLE_VISUALIZATION_RT_GEN_MESH_USE_GPU_RENDERING
00135     #if   defined ( TAPs_DEFORMABLE_MODEL_VISUALIZATION_GPU_1X1X1_MARCHING_CUBES )
00136         #define TAPs_MODEL_DEFORMABLE_VISUALIZATION_RT_GEN_MESH_USE_GPU_MC_1X1X1_CUBES
00137     #elif defined ( TAPs_DEFORMABLE_MODEL_VISUALIZATION_GPU_2X2X2_MARCHING_CUBES )
00138         #define TAPs_MODEL_DEFORMABLE_VISUALIZATION_RT_GEN_MESH_USE_GPU_MC_2X2X2_CUBES
00139     //#elif defined ( TAPs_DEFORMABLE_MODEL_VISUALIZATION_GPU_4X4X4_MARCHING_CUBES )
00140     //  #define TAPs_MODEL_DEFORMABLE_VISUALIZATION_RT_GEN_MESH_USE_GPU_MC_4X4X4_CUBES
00141     #else
00142         #define TAPs_MODEL_DEFORMABLE_VISUALIZATION_RT_GEN_MESH_USE_GPU_MC_1X1X1_CUBES
00143     #endif
00144 #endif // TAPs_MODEL_DEFORMABLE_VISUALIZATION_RT_GEN_MESH_USE_GPU_RENDERING
00145 
00146 //#define TAPs_DEFORMABLE_MODEL_VISUALIZATION_GPU_SUBCUBE_BY_TWO
00147 #ifdef TAPs_DEFORMABLE_MODEL_VISUALIZATION_GPU_SUBCUBE_BY_TWO
00148     #define TAPs_DEFORMABLE_MODEL_VISUALIZATION_GPU_MARCHING_CUBES_SUBCUBE_BY_TWO
00149 #endif // TAPs_DEFORMABLE_MODEL_VISUALIZATION_GPU_SUBCUBE_BY_TWO
00150 //-----------------------------------------------------------------------------
00151 //-----------------------------------------------------------------------------
00160 //-----------------------------------------------------------------------------
00161 //#define TAPs_DEFORMABLE_MODEL_VISUALIZATION_GPU_MARCHING_CUBES_WITHOUT_TRACKING_CUBES
00162 //#define TAPs_DEFORMABLE_MODEL_VISUALIZATION_GPU_MARCHING_CUBES_WITH_TRACKING_CUBES    // Default
00163 //-----------------------------------------------------------------------------
00164 #if   defined ( TAPs_MODEL_DEFORMABLE_VISUALIZATION_RT_GEN_MESH_USE_GPU_MC_1X1X1_CUBES )
00165     #if defined   ( TAPs_DEFORMABLE_MODEL_VISUALIZATION_GPU_MARCHING_CUBES_WITHOUT_TRACKING_CUBES )
00166         #define TAPs_MODEL_DEFORMABLE_VISUALIZATION_RT_GEN_MESH_USE_GPU_MC_WITHOUT_TRACKING_CUBES
00167     #elif defined ( TAPs_DEFORMABLE_MODEL_VISUALIZATION_GPU_MARCHING_CUBES_WITH_TRACKING_CUBES )
00168         #define TAPs_MODEL_DEFORMABLE_VISUALIZATION_RT_GEN_MESH_USE_GPU_MC_WITH_TRACKING_CUBES
00169     #else
00170         #define TAPs_MODEL_DEFORMABLE_VISUALIZATION_RT_GEN_MESH_USE_GPU_MC_WITH_TRACKING_CUBES
00171     #endif
00172 #else
00173     #define TAPs_MODEL_DEFORMABLE_VISUALIZATION_RT_GEN_MESH_USE_GPU_MC_WITHOUT_TRACKING_CUBES
00174 #endif
00175 //-----------------------------------------------------------------------------
00176 
00177 //-----------------------------------------------------------------------------
00178 //=============================================================================
00179 
00180 BEGIN_NAMESPACE_TAPs__OpenGL
00181 //=============================================================================
00182 template <typename T> class ModelDeformableGLSL;    // class forward
00183 //=============================================================================
00184 template <typename T>
00185 class ModelDeformableGLSL_Visualization_RTGenMesh {
00186 //-----------------------------------------------------------------------------
00187 // Member Functions -----------------------------------------------------------
00188 public:
00189     //-------------------------------------------------------------------------
00190     // Nondefault Constructor
00191     ModelDeformableGLSL_Visualization_RTGenMesh ( 
00192         ModelDeformableGLSL<T> * simDomain );
00193     //-------------------------------------------------------------------------
00194     // Destructor
00195     virtual ~ModelDeformableGLSL_Visualization_RTGenMesh ();
00196     //-------------------------------------------------------------------------
00197     virtual void Default ();
00198     virtual void Clear ();
00199     //-------------------------------------------------------------------------
00200     // Get/Set Fn(s)
00201     //-------------------------------------------
00202     // Ret OpenGL Texture Objects
00203     //Texture * RetObject3DTextureVisualization ()
00204     //  { return m_3DTextureVisualization; }
00205     //-------------------------------------------
00206     // Get OpenGL Texture Names
00207     GLuint  Get3DTexture () const           { return m_3DTexture; }
00208     void    Set3DTexture ( GLuint texName ) { m_3DTexture = texName; }
00209     #ifdef TAPs_MODEL_DEFORMABLE_VISUALIZATION_RT_GEN_MESH_USE_GPU_MC_WITH_TRACKING_CUBES
00210         void UpdateCubeTrackingTexture ();
00211     #endif // TAPs_MODEL_DEFORMABLE_VISUALIZATION_RT_GEN_MESH_USE_GPU_MC_WITH_TRACKING_CUBES
00212     #ifdef TAPs_MODEL_DEFORMABLE_VISUALIZATION_RT_GEN_MESH_USE_GPU_MC_WITHOUT_TRACKING_CUBES
00213         void UpdateCubeTrackingTexture () {}
00214     #endif // TAPs_MODEL_DEFORMABLE_VISUALIZATION_RT_GEN_MESH_USE_GPU_MC_WITHOUT_TRACKING_CUBES
00215     //-------------------------------------------
00216     //===========================================
00217     // Get/Set Adjustable Parameters
00218     //-------------------------------------------
00219 
00220     // Selectable Gradient Computations
00221     //#ifdef TAPs_MODEL_DEFORMABLE_VISUALIZATION_RT_GEN_MESH_USE_GPU_MC_GRADIENT_SELECTABLE
00222         bool    GetGradientComputationByFacesStatus () const    { return m_bComputeGradientFaces; }
00223         bool    GetGradientComputationByVerticesStatus () const { return m_bComputeGradientVertices; }
00224         bool    GetGradientComputationByEdgesStatus () const    { return m_bComputeGradientEdges; }
00225         void    SetGradientComputationByFacesStatus ( bool b )      { m_bComputeGradientFaces = b; }
00226         void    SetGradientComputationByVerticesStatus ( bool b )   { m_bComputeGradientVertices = b; }
00227         void    SetGradientComputationByEdgesStatus ( bool b )      { m_bComputeGradientEdges = b; }
00228     //#else
00229     //  #ifdef TAPs_MODEL_DEFORMABLE_VISUALIZATION_RT_GEN_MESH_USE_GPU_MC_GRADIENT_FACES
00230     //      bool    GetGradientComputationByFacesStatus () const    { return true; }
00231     //  #else
00232     //      bool    GetGradientComputationByFacesStatus () const    { return false; }
00233     //  #endif
00234     //  #ifdef TAPs_MODEL_DEFORMABLE_VISUALIZATION_RT_GEN_MESH_USE_GPU_MC_GRADIENT_VERTICES
00235     //      bool    GetGradientComputationByVerticesStatus () const { return true; }
00236     //  #else
00237     //      bool    GetGradientComputationByVerticesStatus () const { return false; }
00238     //  #endif
00239     //  #ifdef TAPs_MODEL_DEFORMABLE_VISUALIZATION_RT_GEN_MESH_USE_GPU_MC_GRADIENT_VERTICES
00240     //      bool    GetGradientComputationByEdgesStatus () const    { return true; }
00241     //  #else
00242     //      bool    GetGradientComputationByEdgesStatus () const    { return false; }
00243     //  #endif
00244     //  void    SetGradientComputationByFacesStatus ( bool b )      {}
00245     //  void    SetGradientComputationByVerticesStatus ( bool b )   {}
00246     //  void    SetGradientComputationByEdgesStatus ( bool b )      {}
00247     //#endif // TAPs_MODEL_DEFORMABLE_VISUALIZATION_RT_GEN_MESH_USE_GPU_MC_GRADIENT_SELECTABLE
00248 
00249     // Interpolation
00250     bool    GetUseGlobalInterpolationValue () const     { return m_bUseGlobalInterpolationVal; }
00251     void    SetUseGlobalInterpolationValue ( bool b )   { m_bUseGlobalInterpolationVal = b; }
00252     T       GetGlobalInterpolationValue () const        { return m_tGlobalInterpolationVal; }
00253     void    SetGlobalInterpolationValue ( T val )
00254     {
00255         if      ( val < 0.0 ) val = 0.0;
00256         else if ( 1.0 < val ) val = 1.0;
00257         m_tGlobalInterpolationVal = val;
00258     }
00259     //-------------
00260     bool    GetStatusDrawnWithPNTriangle () const   { return m_bDrawPNTriangle; }
00261     void    SetStatusDrawnWithPNTriangle ( bool b ) { m_bDrawPNTriangle = b; }
00262     //
00263     int     GetPNTriangleSmoothness () const    { 
00264         return static_cast<int>( m_PNTriangleSmoothness );
00265     }
00266     void    SetPNTriangleSmoothness ( int i ) {
00267         if      ( i < 2 )   i = 2;
00268         else if ( 10 < i )  i = 10;
00269         m_PNTriangleSmoothness = static_cast<unsigned char>( i );
00270     }
00271     //-------------------------------------------
00272     //===========================================
00273     //-------------------------------------------------------------------------
00274     //=========================================================================
00275     // For Initializations & Setups
00276     //-------------------------------------------------------------------------
00280     bool SetupVisualization ( 
00281         int resolutionX, int resolutionY, int resolutionZ, 
00282         enum GridGenerator<T>::VertexFlag *** pFlagDataForXYZVoxels 
00283     );
00284 protected:
00288     #ifdef TAPs_MODEL_DEFORMABLE_VISUALIZATION_RT_GEN_MESH_USE_GPU_RENDERING
00289     bool SetupShadersForDrawing ();
00290     #endif // TAPs_MODEL_DEFORMABLE_VISUALIZATION_RT_GEN_MESH_USE_GPU_RENDERING
00291 
00294     #ifdef TAPs_MODEL_DEFORMABLE_VISUALIZATION_RT_GEN_MESH_USE_GPU_MC_WITH_TRACKING_CUBES
00295     bool SetupShadersForUpdateCubeTrackingTexture ();
00296     #endif // TAPs_MODEL_DEFORMABLE_VISUALIZATION_RT_GEN_MESH_USE_GPU_MC_WITH_TRACKING_CUBES
00297     //-------------------------------------------------------------------------
00298     //=========================================================================
00299     //-------------------------------------------------------------------------
00300 public:
00301     virtual void DrawByGL   ();
00302     virtual void DrawByGL_StandardMC ();
00303     virtual void DrawByGLSL ();
00304     //-------------------------------------------------------------------------
00305     //=========================================================================
00306 
00307     //=========================================================================
00308     // Simulation/Animation Fn(s)
00309     //-------------------------------------------------------------------------
00310     //-------------------------------------------------------------------------
00311     //=========================================================================
00312 
00313 //-----------------------------------------------------------------------------
00314 // Data Members  --------------------------------------------------------------
00315 protected:
00316     //=========================================================================
00317     // GPU
00318     //-------------------------------------------------------------------------
00339 #ifdef TAPs_MODEL_DEFORMABLE_VISUALIZATION_RT_GEN_MESH_USE_BUFFERS
00340 #endif 
00341 
00342 #ifdef TAPs_MODEL_DEFORMABLE_VISUALIZATION_RT_GEN_MESH_USE_BUFFERS
00343     unsigned int    m_uiTotalCubes;
00344     GLuint  m_vboVerticesAsTexCoords;
00345     bool    GenerateTheVBOForTextureCoordinates ( Vector3<int> const & vGridSize );
00346 
00347     #ifdef TAPs_MODEL_DEFORMABLE_VISUALIZATION_RT_GEN_MESH_USE_GPU_MC_WITH_TRACKING_CUBES
00348     GLuint  m_vboTexCoordForCubeTracking;
00349     bool    GenerateTheVBOForTexCoordForCubeTracking ( Vector3<int> const & vGridSize );
00350     #endif //   #ifdef TAPs_MODEL_DEFORMABLE_VISUALIZATION_RT_GEN_MESH_USE_GPU_MC_WITH_TRACKING_CUBES
00351 #endif // TAPs_MODEL_DEFORMABLE_VISUALIZATION_RT_GEN_MESH_USE_BUFFERS
00352     //-------------------------------------------------------------------------
00353     // For OpenGL Shading Language
00354     GLSLShaderManager       m_glslShaderManager;
00355 
00356     // Selectable Gradient Computations
00357     //#ifdef TAPs_MODEL_DEFORMABLE_VISUALIZATION_RT_GEN_MESH_USE_GPU_MC_GRADIENT_SELECTABLE
00358     bool    m_bComputeGradientFaces;        //  6 faces of the cube
00359     bool    m_bComputeGradientVertices;     //  8 vertices of the cube
00360     bool    m_bComputeGradientEdges;        // 12 edges of the cube
00361     //#endif // TAPs_MODEL_DEFORMABLE_VISUALIZATION_RT_GEN_MESH_USE_GPU_MC_GRADIENT_SELECTABLE
00362 
00363     // Display Deformable Model by Marching Cubes
00364     GLSLProgramObject *     m_glslProgramObjectWithGlobalIntpValue;
00365     GLSLProgramObject *     m_glslProgramObjectWithTextureIntpValue;
00366 
00367     void UpdateShaderParametersForVisualization ( GLSLProgramObject * pShader );
00368 
00369     #define TAPs_MODEL_DEFORMABLE_VISUALIZATION_RT_GEN_MESH_USE_SHADER_FOR_SHADING_SURFACE_FROM_SW
00370     #ifdef TAPs_MODEL_DEFORMABLE_VISUALIZATION_RT_GEN_MESH_USE_SHADER_FOR_SHADING_SURFACE_FROM_SW
00371     GLSLProgramObject *     m_glslProgramObjectForShaderSurfaceFromSW;
00372     #endif // TAPs_MODEL_DEFORMABLE_VISUALIZATION_RT_GEN_MESH_USE_SHADER_FOR_SHADING_SURFACE_FROM_SW
00373 
00374     // Update texture for tracking cube values
00375     #ifdef TAPs_MODEL_DEFORMABLE_VISUALIZATION_RT_GEN_MESH_USE_GPU_MC_WITH_TRACKING_CUBES
00376     GLSLProgramObject *     m_glslProgramObjectUpdateCubeTracking;
00377     #endif // TAPs_MODEL_DEFORMABLE_VISUALIZATION_RT_GEN_MESH_USE_GPU_MC_WITH_TRACKING_CUBES
00378     //-------------------------------------------------------------------------
00383     GLuint  m_3DTexture;    // texture name
00384     //-------------------------------------------------------------------------
00385     ModelDeformableGLSL<T> *    m_SimDomain;
00386     //=========================================================================
00387     // Static Data
00388     //-------------------------------------------------------------------------
00389     static unsigned short   g_iNumOfCreatedVisualDefModel;
00390     // Edge and triangle tables are static
00391     static unsigned short   EdgeTable[256];         // Edge Table     on CPU
00392     static char             TriTable[256][16];      // Triangle Table on CPU
00393     static GLuint           EdgeTableTexture;       // Edge Table     Texture on GPU
00394     static GLuint           TriTableTexture;        // Triangle Table Texture on GPU
00395     static bool             SetupEdgeAndTriTablesOnGPU ();
00396     // Tri and Edge tables can be combined into one texture.
00397     // However, the created marching cube surface from a geometry shader 
00398     //   doesn't get the whole surface.
00399     // Another weird error from geometry shader.
00400     //static GLuint         TriAndEdgeTableTexture; // Triangle & Edge Tables (together) on GPU
00401     //static bool           SetupEdgeAndTriTablesOnGPUToo ();
00402     //-------------------------------------------------------------------------
00403     // Texture for storing (or tracking) each cube's value
00404     #ifdef TAPs_MODEL_DEFORMABLE_VISUALIZATION_RT_GEN_MESH_USE_GPU_MC_WITH_TRACKING_CUBES
00405     GLuint  m_glslFBO_CubeTracking; // Frame buffers for cube tracking  (need one buffer)
00406     bool    GenerateBufferObjects ();
00407     GLuint  CubeTrackingTexture;    // Cube Tracking Texture on GPU
00408     bool    SetupCubeTrackingTexture ( Vector3<int> const & vGridSize );
00409     #endif // TAPs_MODEL_DEFORMABLE_VISUALIZATION_RT_GEN_MESH_USE_GPU_MC_WITH_TRACKING_CUBES
00410     //-------------------------------------------------------------------------
00411     //=========================================================================
00412     // Adjustable Parameters
00413     //-------------------------------------------------------------------------
00422     T       m_tGlobalInterpolationVal;
00423     bool    m_bUseGlobalInterpolationVal;
00430     bool            m_bDrawPNTriangle;
00431     unsigned char   m_PNTriangleSmoothness;
00432     //-------------------------------------------------------------------------
00433     //=========================================================================
00434     //-------------------------------------------------------------------------
00435     //=========================================================================
00436     //-------------------------------------------------------------------------
00437 }; // CLASS END: ModelDeformableGLSL_Visualization_3DTexture ******************
00438 //=============================================================================
00439 END_NAMESPACE_TAPs__OpenGL
00440 //-----------------------------------------------------------------------------
00441 // Include definition if TAPs_USE_EXPORT is not defined
00442 //#if !defined( TAPs_USE_EXPORT )
00443     #include "TAPsModelDeformableGLSL_Visualization_RTGenMesh.cpp"
00444 //#endif
00445 //-----------------------------------------------------------------------------
00446 #endif
00447 //34567890123456789012345678901234567890123456789012345678901234567890123456789
00448 //--+----1----+----2----+----3----+----4----+----5----+----6----+----7----+----
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Defines