Carna  Version 3.3.2
VertexBuffer.h
Go to the documentation of this file.
1 /*
2  * Copyright (C) 2010 - 2015 Leonid Kostrykin
3  *
4  * Chair of Medical Engineering (mediTEC)
5  * RWTH Aachen University
6  * Pauwelsstr. 20
7  * 52074 Aachen
8  * Germany
9  *
10  */
11 
12 #ifndef VERTEXBUFFER_H_6014714286
13 #define VERTEXBUFFER_H_6014714286
14 
15 #include <Carna/Carna.h>
16 #include <Carna/base/BaseBuffer.h>
17 #include <iterator>
18 
23 namespace Carna
24 {
25 
26 namespace base
27 {
28 
29 
30 
31 // ----------------------------------------------------------------------------------
32 // VertexBufferBase
33 // ----------------------------------------------------------------------------------
34 
42 class CARNA_LIB VertexBufferBase : public BaseBuffer
43 {
44 
45 protected:
46 
51  void copy( const void* bufferPtr, std::size_t bufferSize, std::size_t verticesCount );
52 
53 public:
54 
59 
60 }; // VertexBufferBase
61 
62 
63 
64 // ----------------------------------------------------------------------------------
65 // VertexBuffer
66 // ----------------------------------------------------------------------------------
67 
74 template< typename VertexType >
76 {
77 
78 public:
79 
83  typedef VertexType Vertex;
84 
89  void copy( const Vertex* verticesPtr, const std::size_t verticesCount );
90 
91 }; // VertexBuffer
92 
93 
94 template< typename VertexType >
95 void VertexBuffer< VertexType >::copy( const Vertex* verticesPtr, const std::size_t verticesCount )
96 {
97  VertexBufferBase::copy( verticesPtr, verticesCount * sizeof( Vertex ), verticesCount );
98 }
99 
100 
101 
102 } // namespace Carna :: base
103 
104 } // namespace Carna
105 
106 #endif // VERTEXBUFFER_H_6014714286
Specializes VertexBufferBase for particular VertexType.
Definition: VertexBuffer.h:75
void copy(const Vertex *verticesPtr, const std::size_t verticesCount)
Copies verticesCount vertices referenced by verticesPtr to the maintained vertex buffer object...
Definition: VertexBuffer.h:95
Defines Carna::base::BaseBuffer.
Maintains GL_ARRAY_BUFFER object that holds vertices. This class realizes the RAII-idiom.
Definition: VertexBuffer.h:42
Implements OpenGL buffer objects maintenance RAII base class.
Definition: BaseBuffer.h:39
void copy(const void *bufferPtr, std::size_t bufferSize, std::size_t verticesCount)
Copies verticesCount vertices referenced by bufferPtr to the maintained vertex buffer object...
VertexType Vertex
Holds the vertex type maintained by this vertex buffer object.
Definition: VertexBuffer.h:83