#ifndef ECSGAME_LINES_H #define ECSGAME_LINES_H #include "../../Util/geometry.h" #include #include #include #include struct Lines { explicit Lines(std::vector lines) : vertex_count(lines.size()) { GLfloat linearray[vertex_count * 3]; int pos = 0; for (const Vector &vec : lines) { linearray[pos++] = vec[0]; linearray[pos++] = vec[1]; linearray[pos++] = vec[2]; } glGenVertexArrays(1, &lineVAO); glGenBuffers(1, &lineVBO); glBindVertexArray(lineVAO); glBindBuffer(GL_ARRAY_BUFFER, lineVBO); glBufferData(GL_ARRAY_BUFFER, sizeof(linearray), &linearray, GL_STATIC_DRAW); glEnableVertexAttribArray(0); glVertexAttribPointer(0, 3, GL_FLOAT, GL_FALSE, 3 * sizeof(GLfloat), (void *)0); } void render() const { glEnable(GL_LINE_SMOOTH); glHint(GL_LINE_SMOOTH_HINT, GL_NICEST); glBindVertexArray(lineVAO); glLineWidth(1.0f); glDrawArrays(GL_LINES, 0, vertex_count); glLineWidth(1.0f); } private: GLuint lineVAO, lineVBO; int vertex_count; }; #endif // ECSGAME_LINES_H