30 #ifndef ZENI_VERTEX_BUFFER_H
31 #define ZENI_VERTEX_BUFFER_H
43 #if defined(REQUIRE_GL_ES)
54 class ZENI_GRAPHICS_DLL Render_Wrapper;
55 class ZENI_GRAPHICS_DLL Vertex_Buffer;
61 virtual void operator()()
const = 0;
73 Vertex_Buffer_Renderer & operator=(
const Vertex_Buffer_Renderer &);
87 Vertex_Buffer & operator=(
const Vertex_Buffer &);
98 #pragma warning( push )
99 #pragma warning( disable : 4251 )
103 #pragma warning( pop )
112 inline void do_normal_alignment(
const bool align_normals_ =
true);
113 inline bool will_do_normal_alignment()
const;
144 inline size_t num_vertices_cm()
const;
145 inline size_t num_vertices_t()
const;
147 inline void unprerender();
150 void sort_triangles();
153 void set_descriptors();
159 #pragma warning( push )
160 #pragma warning( disable : 4251 )
162 std::vector<Triangle<Vertex3f_Color> *> m_triangles_cm;
163 std::vector<Triangle<Vertex3f_Texture> *> m_triangles_t;
165 std::vector<Vertex_Buffer_Range *> m_descriptors_cm;
166 std::vector<Vertex_Buffer_Range *> m_descriptors_t;
168 #pragma warning( pop )
171 bool m_align_normals;
179 static void lose_all();
184 #pragma warning( push )
185 #pragma warning( disable : 4251 )
192 Uninit * duplicate()
const {
201 Uninit(
const Uninit &);
202 Uninit operator=(
const Uninit &);
205 #pragma warning( pop )
208 static std::set<Vertex_Buffer *> & get_vbos();
215 Vertex_Buffer_Renderer_GL_Fixed operator=(
const Vertex_Buffer_Renderer_GL_Fixed &);
218 Vertex_Buffer_Renderer_GL_Fixed(
Vertex_Buffer &vertex_buffer);
219 virtual ~Vertex_Buffer_Renderer_GL_Fixed();
224 inline size_t vertex_size()
const;
225 inline size_t normal_size()
const;
226 inline size_t color_size()
const;
227 inline size_t texel_size()
const;
230 union ZENI_GRAPHICS_DLL VBO_GL {
238 Vertex_Buffer_Renderer_GL_Shader operator=(
const Vertex_Buffer_Renderer_GL_Shader &);
241 Vertex_Buffer_Renderer_GL_Shader(
Vertex_Buffer &vertex_buffer);
242 virtual ~Vertex_Buffer_Renderer_GL_Shader();
247 inline size_t vertex_size()
const;
248 inline size_t normal_size()
const;
249 inline size_t color_size()
const;
250 inline size_t texel_size()
const;
252 union ZENI_GRAPHICS_DLL VBO_GL {
262 Vertex_Buffer_Renderer_DX9 operator=(
const Vertex_Buffer_Renderer_DX9 &);
266 virtual ~Vertex_Buffer_Renderer_DX9();
271 inline size_t vertex_c_size()
const;
272 inline size_t vertex_t_size()
const;
static void render(const Vertex_Buffer_Macrorenderer ¯orenderer, std::vector< Vertex_Buffer::Vertex_Buffer_Range * > &descriptors)
An Abstraction of a Material.
virtual ~Vertex_Buffer_Microrenderer()
An Abstraction of a Quadrilateral.
IDirect3DVertexBuffer9 * vbo
The OpenGL Rendering System.
GLint GLenum GLsizei GLsizei GLsizei GLint GLsizei const GLvoid * data
virtual ~Vertex_Buffer_Renderer()
void align_similar_normals(const VERTEX v0, Triangle< VERTEX > &t1, const int &which)
A Vertex_Buffer that accepts Triangle and Quadrilaterals.
std::auto_ptr< Material > material
interface IDirect3DVertexBuffer9 IDirect3DVertexBuffer9
An Abstraction of a Triangle.
virtual ~Vertex_Buffer_Macrorenderer()