4 #define VBO_BUFFER_OFFSET(bytes) ((GLubyte *)NULL + (bytes))
8 GlVBO::GlVBO(GLenum target) :
16 ReleaseBufferElement();
19 void GlVBO::GenerateBuffer(void)
21 glGenBuffers(1, &m_BufID);
24 GLuint GlVBO::GetID(void)
29 void GlVBO::ReleaseBufferElement(void)
34 glDeleteBuffers(1, &m_BufID);
38 bool GlVBO::HasBuffer(void) const
43 void GlVBO::Bind(void)
45 glBindBuffer(m_Target, m_BufID);
48 void GlVBO::AssginBuffer2f(const std::vector<lm::vec2f>& buf)
54 glBufferData(GL_ARRAY_BUFFER, buf.size() * num_elems * 4, buf[0].v(), GL_STATIC_DRAW);
57 void GlVBO::AssginBuffer3f(const std::vector<lm::vec3f>& buf)
63 glBufferData(GL_ARRAY_BUFFER, buf.size() * num_elems * 4, buf[0].v(), GL_STATIC_DRAW);
66 void GlVBO::AssginBufferi(const std::vector<GLuint>& buf)
70 glBufferData(GL_ELEMENT_ARRAY_BUFFER, buf.size() * 4, &buf[0], GL_STATIC_DRAW);
73 void GlVBO::BindPtrAsNoral(void)
75 glEnableClientState(GL_NORMAL_ARRAY);
77 glNormalPointer(GL_FLOAT, 0, VBO_BUFFER_OFFSET(0));
80 void GlVBO::BindPtrAsTexcoord(void)
82 glEnableClientState(GL_TEXTURE_COORD_ARRAY);
84 glTexCoordPointer(2, GL_FLOAT, 0, VBO_BUFFER_OFFSET(0));
87 void GlVBO::BindPtrAsAttrib3f(GLint buf_id)
89 glEnableVertexAttribArray(buf_id);
91 glVertexAttribPointer(buf_id, 3, GL_FLOAT, GL_FALSE, sizeof(float) * 3, VBO_BUFFER_OFFSET(0));