- void Shape::draw(const Window& wnd) const {
- if (this->vertices.size() == 0)
- return;
- glPushAttrib(GL_ENABLE_BIT);
- glDisable(GL_TEXTURE_2D);
- glDisable(GL_BLEND);
- if (this->lineWidth > 1)
- glLineWidth(this->lineWidth);
- glEnableClientState(GL_COLOR_ARRAY);
- const Vertex* vptr = &this->vertices[0];
- glVertexPointer(2, GL_FLOAT, sizeof(Vertex), vptr);
- glColorPointer(4, GL_FLOAT, sizeof(Vertex), vptr + 8);
- glTexCoordPointer(2, GL_FLOAT, sizeof(Vertex), vptr + 24);
- const Type shape_type = !this->fill ? Type::LineLoop : this->type;
- glDrawArrays(static_cast<GLenum>(shape_type), 0, this->vertices.size());
- glDisableClientState(GL_COLOR_ARRAY);
- glPopAttrib();
- }