31 namespace cinder {
namespace gl {
76 enum {
ATTR_INDICES,
ATTR_POSITIONS,
ATTR_NORMALS,
ATTR_COLORS_RGB,
ATTR_COLORS_RGBA,
ATTR_TEXCOORDS2D_0,
ATTR_TEXCOORDS2D_1,
ATTR_TEXCOORDS2D_2,
ATTR_TEXCOORDS2D_3,
ATTR_TEXCOORDS3D_0,
ATTR_TEXCOORDS3D_1,
ATTR_TEXCOORDS3D_2,
ATTR_TEXCOORDS3D_3,
ATTR_TOTAL };
171 explicit VboMesh(
const TriMesh &triMesh, Layout layout = Layout() );
174 VboMesh(
size_t numVertices,
size_t numIndices, Layout layout,
GLenum primitiveType );
176 VboMesh(
size_t numVertices,
size_t numIndices, Layout layout,
GLenum primitiveType,
Vbo *indexBuffer,
Vbo *staticBuffer,
Vbo *dynamicBuffer );
180 static VboMeshRef create(
size_t numVertices,
size_t numIndices,
Layout layout,
GLenum primitiveType ) {
return std::shared_ptr<VboMesh>(
new VboMesh( numVertices, numIndices, layout, primitiveType ) ); }
182 {
return std::shared_ptr<VboMesh>(
new VboMesh( numVertices, numIndices, layout, primitiveType, indexBuffer, staticBuffer, dynamicBuffer ) ); }
289 virtual const char*
what()
const throw() {
return "OpenGL Vbo exception"; }
294 virtual const char*
what()
const throw() {
return "OpenGL Vbo exception: Invalid Target"; }
299 virtual const char*
what()
const throw() {
return "OpenGL Vbo exception: Map failure"; }
304 virtual const char*
what()
const throw() {
return "OpenGL Vbo exception: Unmap failure"; }
void setTexCoord3d0(const Vec3f &t)
Definition: Vbo.h:234
size_t mColorRGBAOffset
Definition: Vbo.h:276
void bufferPositions(const std::vector< Vec3f > &positions)
Definition: Vbo.cpp:582
Vbo()
Definition: Vbo.h:35
size_t getStride() const
Definition: Vbo.h:250
virtual const char * what() const
Definition: Vbo.h:304
GLenum GLint GLint y
Definition: GLee.h:987
void setStaticPositions()
Definition: Vbo.h:130
virtual const char * what() const
Definition: Vbo.h:299
std::shared_ptr< Obj > mObj
Definition: Vbo.h:272
CustomAttr
Definition: Vbo.h:133
void setNormal(const Vec3f &n)
Definition: Vbo.h:230
void operator++()
Definition: Vbo.h:244
GLuint getId() const
Definition: Vbo.h:48
void addDynamicCustomVec3f()
Definition: Vbo.h:139
void setStaticTexCoords3d(size_t unit=0)
Definition: Vbo.h:118
void setColorRGB(const Color &n)
Definition: Vbo.h:231
void setDynamicTexCoords3d(size_t unit=0)
Definition: Vbo.h:119
void setDynamicColorsRGBA()
Definition: Vbo.h:101
void setCustomDynamicLocation(size_t internalIndex, GLuint location)
Definition: Vbo.h:212
virtual const char * what() const
Definition: Vbo.h:294
bool hasStaticTexCoords2d(size_t unit=0) const
Definition: Vbo.h:104
size_t getIndex() const
Definition: Vbo.h:248
void setDynamicIndices()
Definition: Vbo.h:125
Vbo & getStaticVbo() const
Definition: Vbo.h:208
uint8_t * mDataEnd
Definition: Vbo.h:267
void reset()
Emulates shared_ptr-like behavior.
Definition: Vbo.h:221
void setStaticColorsRGBA()
Definition: Vbo.h:100
uint8_t * mPtr
Definition: Vbo.h:273
size_t mStaticStride
Definition: Vbo.h:160
static void unbindBuffers()
Definition: Vbo.cpp:571
size_t getNumIndices() const
Definition: Vbo.h:185
std::shared_ptr< Obj > mObj
Definition: Vbo.h:59
virtual const char * what() const
Definition: Vbo.h:289
uint8_t * map(GLenum access)
Definition: Vbo.cpp:73
Layout mLayout
Definition: Vbo.h:162
size_t mNumVertices
Definition: Vbo.h:153
GLuint index
Definition: GLee.h:2259
GLuint mId
Definition: Vbo.h:56
GLsizei GLsizei GLenum GLenum const GLvoid * data
Definition: GLee.h:1011
std::shared_ptr< VboMesh > VboMeshRef
Definition: gl.h:65
void bufferNormals(const std::vector< Vec3f > &normals)
Definition: Vbo.cpp:606
static GLenum sCustomAttrTypes[TOTAL_CUSTOM_ATTR_TYPES]
Definition: Vbo.h:136
bool hasColorsRGBA() const
Definition: Vbo.h:97
VertexIter(const VboMesh &mesh)
Definition: Vbo.cpp:721
~Obj()
Definition: Vbo.cpp:41
uint8_t * mData
Definition: Vbo.h:274
uint8_t * mDataEnd
Definition: Vbo.h:274
bool isDone() const
Definition: Vbo.h:245
void setDynamicNormals()
Definition: Vbo.h:89
void bufferColorsRGBA(const std::vector< ColorA > &colors)
Definition: Vbo.cpp:682
bool hasTexCoords2d(size_t unit=0) const
Definition: Vbo.h:103
bool hasDynamicTexCoords3d(size_t unit=0) const
Definition: Vbo.h:117
static VboMeshRef create(size_t numVertices, size_t numIndices, Layout layout, GLenum primitiveType)
Definition: Vbo.h:180
size_t mPositionOffset
Definition: Vbo.h:275
bool hasStaticColorsRGBA() const
Definition: Vbo.h:98
void setCustomVec2f(size_t index, const Vec2f &v)
Definition: Vbo.h:240
size_t mColorRGBOffset
Definition: Vbo.h:158
void addDynamicCustomVec4f()
Definition: Vbo.h:140
size_t mNumIndices
Definition: Vbo.h:153
size_t mNormalOffset
Definition: Vbo.h:157
std::vector< std::pair< CustomAttr, size_t > > mCustomDynamic
Definition: Vbo.h:143
void bind()
Definition: Vbo.cpp:51
void addDynamicCustomVec2f()
Definition: Vbo.h:138
bool hasIndices() const
Definition: Vbo.h:121
void setStaticIndices()
Definition: Vbo.h:124
unsigned int GLuint
Definition: gldx.h:55
void * getPointer() const
Definition: Vbo.h:252
Vec3< float > Vec3f
Definition: Vector.h:1317
bool hasDynamicIndices() const
Definition: Vbo.h:123
Vbo mBuffers[TOTAL_BUFFERS]
Definition: Vbo.h:155
uint8_t * mData
Definition: Vbo.h:267
bool hasStaticIndices() const
Definition: Vbo.h:122
std::shared_ptr< Obj > mObj
Definition: Vbo.h:284
size_t mTexCoordOffset[ATTR_MAX_TEXTURE_UNIT+1]
Definition: Vbo.h:159
void setDynamicPositions()
Definition: Vbo.h:131
Vbo & getDynamicVbo() const
Definition: Vbo.h:209
Obj(const VboMesh &mesh)
Definition: Vbo.cpp:739
~Obj()
Definition: Vbo.cpp:751
GLuint GLuint GLsizei GLenum const GLvoid * indices
Definition: GLee.h:963
void setDynamicColorsRGB()
Definition: Vbo.h:95
bool hasStaticColorsRGB() const
Definition: Vbo.h:92
GLenum mPrimitiveType
Definition: Vbo.h:161
void addDynamicCustomFloat()
Definition: Vbo.h:137
size_t mNormalOffset
Definition: Vbo.h:275
GLintptr GLsizeiptr GLbitfield access
Definition: GLee.h:5533
GLenum mTarget
Definition: Vbo.h:55
void bufferIndices(const std::vector< uint32_t > &indices)
Definition: Vbo.cpp:577
GLenum GLint x
Definition: GLee.h:987
GLintptr offset
Definition: GLee.h:2095
GLuint GLuint GLsizei count
Definition: GLee.h:963
GLenum GLsizei n
Definition: GLee.h:5780
void setTexCoord3d2(const Vec3f &t)
Definition: Vbo.h:238
uint8_t mStride
Definition: Vbo.h:278
bool hasStaticNormals() const
Definition: Vbo.h:86
VboMesh()
Definition: Vbo.h:170
Layout()
Definition: Vbo.h:80
int mAttributes[ATTR_TOTAL]
Definition: Vbo.h:142
GLenum getPrimitiveType() const
Definition: Vbo.h:187
size_t mPositionOffset
Definition: Vbo.h:156
void setCustomFloat(size_t index, float v)
Definition: Vbo.h:239
bool hasPositions() const
Definition: Vbo.h:127
static VboMeshRef create(const TriMesh &triMesh, Layout layout=Layout())
Definition: Vbo.h:178
bool hasDynamicTexCoords2d(size_t unit=0) const
Definition: Vbo.h:105
GLenum getTarget() const
Definition: Vbo.h:47
bool hasDynamicTexCoords() const
Definition: Vbo.cpp:97
static int sCustomAttrSizes[TOTAL_CUSTOM_ATTR_TYPES]
Definition: Vbo.h:134
const GLdouble * v
Definition: GLee.h:1384
bool hasStaticTexCoords3d(size_t unit=0) const
Definition: Vbo.h:116
void setColorRGBA(const ColorA &n)
Definition: Vbo.h:232
void setStaticColorsRGB()
Definition: Vbo.h:94
bool hasDynamicColorsRGB() const
Definition: Vbo.h:93
GLdouble GLdouble z
Definition: GLee.h:1911
std::vector< size_t > mCustomOffsets
Definition: Vbo.h:268
bool hasTexCoords3d(size_t unit=0) const
Definition: Vbo.h:115
void setTexCoord3d1(const Vec3f &t)
Definition: Vbo.h:236
void initializeBuffers(bool staticDataPlanar)
Definition: Vbo.cpp:285
bool hasNormals() const
Definition: Vbo.h:85
static VboMeshRef create(size_t numVertices, size_t numIndices, Layout layout, GLenum primitiveType, Vbo *indexBuffer, Vbo *staticBuffer, Vbo *dynamicBuffer)
Definition: Vbo.h:181
bool hasDynamicColorsRGBA() const
Definition: Vbo.h:99
std::vector< GLint > mCustomDynamicLocations
Definition: Vbo.h:164
bool hasDynamicNormals() const
Definition: Vbo.h:87
bool hasStaticTexCoords() const
Definition: Vbo.cpp:88
void reset()
Emulates shared_ptr-like behavior.
Definition: Vbo.h:66
void setPosition(float x, float y, float z)
Definition: Vbo.h:229
Vbo & getIndexVbo() const
Definition: Vbo.h:207
void setCustomVec4f(size_t index, const Vec4f &v)
Definition: Vbo.h:242
void bindAllData() const
Definition: Vbo.cpp:511
void bindIndexBuffer() const
Definition: Vbo.cpp:566
void setTexCoordOffset(size_t unit, size_t aTexCoordOffset)
Definition: Vbo.h:215
std::shared_ptr< Obj > Vbo::* unspecified_bool_type
Emulates shared_ptr-like behavior.
Definition: Vbo.h:64
bool hasDynamicPositions() const
Definition: Vbo.h:129
Obj(GLenum aTarget)
Definition: Vbo.cpp:35
std::vector< std::pair< CustomAttr, size_t > > mCustomStatic
Definition: Vbo.h:143
void unbind()
Definition: Vbo.cpp:56
GLboolean GLboolean GLboolean GLboolean a
Definition: GLee.h:2964
size_t mTexCoordOffset[ATTR_MAX_TEXTURE_UNIT+1]
Definition: Vbo.h:277
void bufferColorsRGB(const std::vector< Color > &colors)
Definition: Vbo.cpp:663
void setTexCoord2d1(const Vec2f &t)
Definition: Vbo.h:235
std::shared_ptr< Obj > VboMesh::* unspecified_bool_type
Emulates shared_ptr-like behavior.
Definition: Vbo.h:219
size_t getTexCoordOffset(size_t unit) const
Definition: Vbo.h:214
int GLint
Definition: gldx.h:51
GLsizeiptr const GLvoid GLenum usage
Definition: GLee.h:2089
std::vector< GLint > mCustomStaticLocations
Definition: Vbo.h:163
void enableClientStates() const
Definition: Vbo.cpp:451
bool hasColorsRGB() const
Definition: Vbo.h:91
const Layout & getLayout() const
Definition: Vbo.h:189
void setDynamicTexCoords2d(size_t unit=0)
Definition: Vbo.h:107
void set(const VertexIter &other)
Definition: Vbo.cpp:706
Vec3f * getPositionPointer() const
Definition: Vbo.h:254
void setTexCoord2d2(const Vec2f &t)
Definition: Vbo.h:237
bool hasStaticPositions() const
Definition: Vbo.h:128
void bufferTexCoords3d(size_t unit, const std::vector< Vec3f > &texCoords)
Definition: Vbo.cpp:644
bool hasTexCoords(size_t unit) const
Definition: Vbo.h:113
static VboMeshRef create(const TriMesh2d &triMesh, Layout layout=Layout())
Definition: Vbo.h:179
void setStaticNormals()
Definition: Vbo.h:88
void setCustomVec3f(size_t index, const Vec3f &v)
Definition: Vbo.h:241
size_t getNumVertices() const
Definition: Vbo.h:186
size_t mDynamicStride
Definition: Vbo.h:160
GLint location
Definition: GLee.h:2373
void bufferSubData(ptrdiff_t offset, size_t size, const void *data)
Definition: Vbo.cpp:67
bool isDefaults() const
Definition: Vbo.h:83
GLdouble GLdouble t
Definition: GLee.h:1426
Definition: TriMesh.h:167
void disableClientStates() const
Definition: Vbo.cpp:486
static GLint sCustomAttrNumComponents[TOTAL_CUSTOM_ATTR_TYPES]
Definition: Vbo.h:135
void setStaticTexCoords2d(size_t unit=0)
Definition: Vbo.h:106
void bufferData(size_t size, const void *data, GLenum usage)
Definition: Vbo.cpp:61
GLsizeiptr size
Definition: GLee.h:2089
unsigned int GLenum
Definition: gldx.h:46
size_t mColorRGBAOffset
Definition: Vbo.h:158
class VertexIter mapVertexBuffer()
Definition: Vbo.cpp:701
Vbo mVbo
Definition: Vbo.h:269
void setCustomStaticLocation(size_t internalIndex, GLuint location)
Definition: Vbo.h:211
void setTexCoord2d0(const Vec2f &t)
Definition: Vbo.h:233
void setPosition(const Vec3f &v)
Definition: Vbo.h:228
void bufferTexCoords2d(size_t unit, const std::vector< Vec2f > &texCoords)
Definition: Vbo.cpp:625
void unmap()
Definition: Vbo.cpp:79
size_t mColorRGBOffset
Definition: Vbo.h:276