#include "Object.h" #include using namespace std; Object::Object() { int i; display = true; drawType = GL_LINES; return; } Object::~Object() { glDeleteBuffers(2, bufferIDs); glDeleteVertexArrays(1, &VAONumber); return; } void Object::Bind(GLuint prog) { GLint attribLoc; Init(); glGenVertexArrays(1, &VAONumber); glBindVertexArray(VAONumber); glGenBuffers(2,bufferIDs); glBindBuffer(GL_ELEMENT_ARRAY_BUFFER, bufferIDs[0]); glBufferData(GL_ELEMENT_ARRAY_BUFFER, index.size()*sizeof(GLushort), index.data(), GL_STATIC_DRAW); glBindBuffer(GL_ARRAY_BUFFER, bufferIDs[1]); glBufferData(GL_ARRAY_BUFFER, points.size()*sizeof(Vertex), points.data(), GL_STATIC_DRAW); attribLoc = glGetAttribLocation(prog, "vPosition"); glVertexAttribPointer(attribLoc, 3, GL_FLOAT, GL_FALSE, sizeof(Vertex), BUFFER_OFFSET(offsetof(Vertex,position))); glEnableVertexAttribArray(attribLoc); attribLoc = glGetAttribLocation(prog, "vColor"); glVertexAttribPointer(attribLoc, 3, GL_FLOAT, GL_FALSE, sizeof(Vertex) , BUFFER_OFFSET(offsetof(Vertex, color))); glEnableVertexAttribArray(attribLoc); glBindVertexArray(0); return; } void Object::SetType(GLenum type){ drawType = type; return; } void Object::ToggleDisplay() { display = !display; return; } void Object::Display() { if (display) { DisplaySetup(); glBindVertexArray(VAONumber); glDrawElements(drawType, index.size(), GL_UNSIGNED_SHORT, NULL); glBindVertexArray(0); } return; }