![]() |
TAPs 0.7.7.3
|
00001 /****************************************************************************** 00002 TAPsOpenGLXPolygonalModel.hpp 00003 00004 (X <==> Extra) 00005 Class OpenGLXPolygonalModel is for creating an Extra OpenGL Polygonal Model. 00006 00007 See class XPolygonalModel (in "../Model/TAPsXPolygonalModel.hpp") and 00008 class OpenGLSupport ("../OpenGL/TAPsOpenGLSupport.hpp") for detail. 00009 00010 SUKITTI PUNAK (11/01/2004) 00011 UPDATE (06/25/2005) 00012 ******************************************************************************/ 00013 #ifndef TAPs_OPENGL_XPOLYGONAL_MODEL_HPP 00014 #define TAPs_OPENGL_XPOLYGONAL_MODEL_HPP 00015 00016 #include "TAPsXPolygonalModel.hpp" 00017 00018 BEGIN_NAMESPACE_TAPs__OpenGL 00019 //============================================================================= 00020 template <typename T> 00021 class OpenGLXPolygonalModel : public /*virtual*/ XPolygonalModel<T> { 00022 //------------------------------------------------------------------------- 00023 // put it through ostream 00024 friend std::ostream & operator<< ( std::ostream &output, OpenGLXPolygonalModel<T> const &o ) 00025 { 00026 output << "\n======================\n" 00027 << "TAPs::OpenGL::OpenGLXPolygonalModel<" 00028 << typeid(T).name() << "> Class\n" 00029 << "======================\n"; 00030 //---------------------------------------------------------------- 00031 // Material Node from OpenGLSupport 00032 output << "\nMaterial Node" << "\n{\n" << o.material << "\n}"; 00033 //---------------------------------------------------------------- 00034 // Nodes from XPolygonalModel<T> 00035 output << "\n\nVertices " << o.m_iNoVertices << "\n{"; 00036 for ( int i = 0; i < o.m_iNoVertices; ++i ) { 00037 output << "\n #" << i << "\t" << o.m_prXVertex[i]; 00038 } 00039 output << "\n}"; 00040 //---------------------------------------------------------------- 00041 // Neighbor vertex ring#1 00042 if ( o.m_pviVertexRing1List ) { 00043 std::vector<int>::const_iterator iterator; 00044 output << "\n\nVertexRing1 " << o.m_iNoVertices << "\n{"; 00045 for ( int i = 0; i < o.m_iNoVertices; ++i ) { 00046 output << "\n #" << i; 00047 for ( iterator = o.m_pviVertexRing1List[i].begin(); 00048 iterator != o.m_pviVertexRing1List[i].end(); 00049 ++iterator ) 00050 { 00051 output << "\t" << *iterator; 00052 } 00053 } 00054 output << "\n}"; 00055 } 00056 //---------------------------------------------------------------- 00057 // Faces Node 00058 output << "\n\nFaces " << o.m_iNoFaces << "\n{"; 00059 for ( int i = 0; i < o.m_iNoFaces; ++i ) { 00060 output << "\n #" << i << "\t" << o.m_prFace[i]; 00061 } 00062 output << "\n}"; 00063 return output; 00064 } 00065 //----------------------------------------------------------------------------- 00066 // Member Functions ----------------------------------------------------------- 00067 // Inherited from OpenGLSupport class 00068 virtual void DisplayGLFaceRange ( 00069 int startFace, int endFace, 00070 OpenGL::Enum::DrawMode DM = OpenGL::Enum::POLYGON ); 00071 public: 00072 //------------------------------------------------------------------------- 00073 // default constructor 00074 OpenGLXPolygonalModel(); 00075 //------------------------------------------------------------------------- 00076 // destructor 00077 virtual ~OpenGLXPolygonalModel(); 00078 //------------------------------------------------------------------------- 00079 //void DisplayGL() 00080 //virtual void DisplayGL( OpenGL::Enum::DrawMode DM = OpenGL::Enum::POLYGON ); 00081 virtual inline void ToggleDisplayVertexNormals () 00082 { bIsDisplayVertexNormals = !bIsDisplayVertexNormals; } 00083 //------------------------------------------------------------------------- 00084 00085 #ifdef TAPs_ENABLE_FACE_VERTEX_COLOR 00086 virtual bool EnableVertexColors ( bool b ); 00087 #endif//TAPs_ENABLE_FACE_VERTEX_COLOR 00088 00089 protected: 00090 //------------------------------------------------------------------------- 00091 // Helper Fn 00092 // void DrawGL() 00093 virtual void DrawGL( GLenum ); 00094 //* 00095 virtual void DrawGLFaceRange ( int startFace, int endFace, GLenum ); 00096 //*/ 00097 00098 #ifdef TAPs_ENABLE_FACE_VERTEX_COLOR 00099 virtual void DrawGLWithFaceVertexColor_RGB ( GLenum ); 00100 virtual void DrawGLWithFaceVertexColor_RGBA ( GLenum ); 00101 #endif//TAPs_ENABLE_FACE_VERTEX_COLOR 00102 00103 // Render by GLSL ------------------------------------------------------------- 00104 #ifdef TAPs_RENDER_BY_GLSL_DS_FACE_VERTEX 00105 virtual void DrawGLSLWithDSFaceVertex_RGB ( GLenum ); 00106 virtual void DrawGLSLWithDSFaceVertex_RGBA ( GLenum ); 00107 #endif//TAPs_RENDER_BY_GLSL_DS_FACE_VERTEX 00108 // ---------------------------------------------------------------------------- 00109 00110 //----------------------------------------------------------------------------- 00111 // Data Members --------------------------------------------------------------- 00112 protected: 00113 //------------------------------------------------------------------------- 00114 bool bIsDisplayVertexNormals; 00115 }; 00116 //============================================================================= 00117 END_NAMESPACE_TAPs__OpenGL 00118 //----------------------------------------------------------------------------- 00119 // Include definition if TAPs_USE_EXPORT is not defined 00120 //#if !defined( TAPs_USE_EXPORT ) 00121 #include "TAPsOpenGLXPolygonalModel.cpp" 00122 //#endif 00123 //----------------------------------------------------------------------------- 00124 #endif 00125 //345678901234567890123456789012345678901234567890123456789012345678901234567890 00126 //--+----1----+----2----+----3----+----4----+----5----+----6----+----7----+----8