![]() |
TAPs 0.7.7.3
|
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----+----