BambuStudio/libigl/igl/opengl/bind_vertex_attrib_array.cpp

25 lines
702 B
C++

#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;
}