BALL
1.4.1
|
00001 // -*- Mode: C++; tab-width: 2; -*- 00002 // vi: set ts=2: 00003 // 00004 // $Id: vertexBuffer.h,v 1.6 2005/12/23 17:02:21 amoll Exp $ 00005 // 00006 00007 #ifndef BALL_VIEW_RENDERING_VERTEXBUFFER_H 00008 #define BALL_VIEW_RENDERING_VERTEXBUFFER_H 00009 00010 #ifndef BALL_COMMON_H 00011 # include <BALL/common.h> 00012 #endif 00013 00014 #ifndef BALL_VIEW_KERNEL_COMMON_H 00015 # include <BALL/VIEW/KERNEL/common.h> 00016 #endif 00017 00018 #ifndef BALL_VIEW_DATATYPE_COLORRGBA_H 00019 # include <BALL/VIEW/DATATYPE/colorRGBA.h> 00020 #endif 00021 00022 namespace BALL 00023 { 00024 namespace VIEW 00025 { 00026 class Mesh; 00027 class GLRenderer; 00028 00040 class BALL_VIEW_EXPORT MeshBuffer 00041 { 00042 public: 00043 00044 BALL_CREATE(MeshBuffer) 00045 00046 typedef GLuint Buffer[4]; 00047 00049 MeshBuffer(); 00050 00052 MeshBuffer(const MeshBuffer& mesh_buffer); 00053 00055 virtual ~MeshBuffer(); 00056 00060 static bool initGL(); 00061 00063 const MeshBuffer& operator = (const MeshBuffer& buffer); 00064 00066 const Mesh* getMesh() { return mesh_;} 00067 00069 void setMesh(const Mesh& mesh) {mesh_ = & mesh;} 00070 00072 bool initialize(); 00073 00075 bool draw(); 00076 00078 void clear(); 00079 00081 void clearBuffer(); 00082 00084 bool isBusy() const { return busy_;} 00085 00091 static void setGLRenderer(GLRenderer* renderer) { gl_renderer_ = renderer;} 00092 00093 protected: 00094 00095 const Mesh* mesh_; 00096 Buffer buffer_; 00097 bool filled_; 00098 static GLRenderer* gl_renderer_; 00099 bool busy_; 00100 bool multiple_colors_; 00101 ColorRGBA color_; 00102 Size vertices_; 00103 Size triangles_; 00104 }; 00105 00106 } // namespace VIEW 00107 } // namespace BALL 00108 00109 #endif // BALL_VIEW_RENDERING_VERTEXBUFFER_H