TAPs 0.7.7.3
TAPsOpenGLPolygonalModel.hpp
Go to the documentation of this file.
00001 /******************************************************************************
00002 TAPsOpenGLPolygonalModel.hpp
00003 
00004 Class OpenGLPolyModel is for creating an OpenGL Polygonal Model.
00005 
00006 See class PolygonalModel (in "../Model/TAPsPolygonalModel.hpp") and
00007 class OpenGLSupport ("../OpenGL/TAPsOpenGLSupport.hpp") for detail.
00008 
00009 SUKITTI PUNAK   (10/31/2004)
00010 UPDATE          (04/27/2005)
00011 ******************************************************************************/
00012 #ifndef TAPs_OPENGL_POLYGONAL_MODEL_HPP
00013 #define TAPs_OPENGL_POLYGONAL_MODEL_HPP
00014 
00015 #include "TAPsPolygonalModel.hpp"
00016 
00017 BEGIN_NAMESPACE_TAPs__OpenGL
00018 //=============================================================================
00019 template <typename T>
00020 class OpenGLPolygonalModel : public /*virtual*/ PolygonalModel<T> {
00021     //-------------------------------------------------------------------------
00022     // put it through ostream
00023     friend std::ostream & operator<< ( std::ostream &output, OpenGLPolygonalModel<T> const &o )
00024     {
00025         output  << "\n======================\n"
00026                 <<   "TAPs::OpenGL::OpenGLPolygonalModel<"
00027                 << typeid(T).name() << "> Class\n"
00028                 <<   "======================\n";
00029         //----------------------------------------------------------------
00030         // Material Node
00031         output  << "\nMaterial Node" << "\n{\n" << o.material << "\n}";
00032         //----------------------------------------------------------------
00033         // Vertices Node
00034         output  << "\n\nVertices " << o.m_iNoVertices << "\n{";
00035         for ( int i = 0; i < o.m_iNoVertices; ++i ) {
00036             output << "\n  #" << i << "\t" << o.m_prVertex[i];
00037         }
00038         output  << "\n}";
00039         //----------------------------------------------------------------
00040         // Faces Node
00041         output  << "\n\nFaces " << o.m_iNoFaces  << "\n{";
00042         for ( int i = 0; i < o.m_iNoFaces; ++i ) {
00043             output << "\n  #" << i << "\t" << o.m_prFace[i];
00044         }
00045         output  << "\n}";
00046         return output;
00047     }
00048 //-----------------------------------------------------------------------------
00049 // Member Functions  -----------------------------------------------------------
00050 public:
00051     //-------------------------------------------------------------------------
00052     // default constructor
00053     OpenGLPolygonalModel();
00054     //-------------------------------------------------------------------------
00055     // destructor
00056     virtual ~OpenGLPolygonalModel();
00057     //-------------------------------------------------------------------------
00058     //void DisplayGL()
00059     //virtual void DisplayGL( OpenGL::Enum::DrawMode DM = OpenGL::Enum::POLYGON );
00060 
00061 #ifdef  TAPs_ENABLE_FACE_VERTEX_COLOR
00062     virtual bool EnableVertexColors ( bool b );
00063 #endif//TAPs_ENABLE_FACE_VERTEX_COLOR
00064 
00065 protected:
00066     //-------------------------------------------------------------------------
00067     // Helper Fn
00068     // void DrawGL()
00069     virtual void DrawGL( GLenum );
00070 
00071 #ifdef  TAPs_ENABLE_FACE_VERTEX_COLOR
00072     virtual void DrawGLWithFaceVertexColor_RGB ( GLenum );
00073     virtual void DrawGLWithFaceVertexColor_RGBA ( GLenum );
00074 #endif//TAPs_ENABLE_FACE_VERTEX_COLOR
00075 
00076 // Render by GLSL -------------------------------------------------------------
00077 #ifdef  TAPs_RENDER_BY_GLSL_DS_FACE_VERTEX
00078     virtual void DrawGLSLWithDSFaceVertex_RGB   ( GLenum );
00079     virtual void DrawGLSLWithDSFaceVertex_RGBA  ( GLenum );
00080 #endif//TAPs_RENDER_BY_GLSL_DS_FACE_VERTEX
00081 // ----------------------------------------------------------------------------
00082 
00083 //-----------------------------------------------------------------------------
00084 };
00085 //=============================================================================
00086 END_NAMESPACE_TAPs__OpenGL
00087 //-----------------------------------------------------------------------------
00088 // Include definition if TAPs_USE_EXPORT is not defined
00089 //#if !defined( TAPs_USE_EXPORT )
00090     #include "TAPsOpenGLPolygonalModel.cpp"
00091 //#endif
00092 //-----------------------------------------------------------------------------
00093 #endif
00094 //345678901234567890123456789012345678901234567890123456789012345678901234567890
00095 //--+----1----+----2----+----3----+----4----+----5----+----6----+----7----+----8
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Defines