123456789101112131415161718192021222324 |
- #include "bind_vertex_attrib_array.h"
- IGL_INLINE GLint igl::opengl::bind_vertex_attrib_array(
- const GLuint program_shader,
- const std::string &name,
- GLuint bufferID,
- const Eigen::Matrix<float,Eigen::Dynamic,Eigen::Dynamic,Eigen::RowMajor> &M,
- bool refresh)
- {
- GLint id = glGetAttribLocation(program_shader, name.c_str());
- if (id < 0)
- return id;
- if (M.size() == 0)
- {
- glDisableVertexAttribArray(id);
- return id;
- }
- glBindBuffer(GL_ARRAY_BUFFER, bufferID);
- if (refresh)
- glBufferData(GL_ARRAY_BUFFER, sizeof(float)*M.size(), M.data(), GL_DYNAMIC_DRAW);
- glVertexAttribPointer(id, M.cols(), GL_FLOAT, GL_FALSE, 0, 0);
- glEnableVertexAttribArray(id);
- return id;
- }
|