/*! \brief Sets up the vertex buffer objects for the axis. */ inline void init() { ///////////////////Vertex Data // three arrows, consisting of 3 lines each (6 vertices std::vector<GLfloat> vertexdata(18 * 3); float arrowHeadDepth = 0.25f; float arrowHeadWidth = 0.15f; for (size_t arrow(0); arrow < 3; ++arrow) { //Ordinate -> for (size_t i(0); i < 3; ++i) vertexdata[(6 * arrow + 0) * 3 + i] = -0.5f; //-> Head for (size_t i(0); i < 3; ++i) vertexdata[(6 * arrow + 1) * 3 + i] = -0.5f; vertexdata[(6 * arrow + 1) * 3 + arrow] = 0.5f; //Head -> for (size_t i(0); i < 3; ++i) vertexdata[(6 * arrow + 2) * 3 + i] = -0.5f; vertexdata[(6 * arrow + 2) * 3 + arrow] = 0.5f; //-> Left point vertexdata[(6 * arrow + 3) * 3 + arrow] = 0.5f - arrowHeadDepth; vertexdata[(6 * arrow + 3) * 3 + ((arrow + 1) % 3)] = -0.5f + arrowHeadWidth; vertexdata[(6 * arrow + 3) * 3 + ((arrow + 2) % 3)] = -0.5f; //Head -> for (size_t i(0); i < 3; ++i) vertexdata[(6 * arrow + 4) * 3 + i] = -0.5f; vertexdata[(6 * arrow + 4) * 3 + arrow] = 0.5f; //-> Right point vertexdata[(6 * arrow + 5) * 3 + arrow] = 0.5f - arrowHeadDepth; vertexdata[(6 * arrow + 5) * 3 + ((arrow + 1) % 3)] = -0.5f - arrowHeadWidth; vertexdata[(6 * arrow + 5) * 3 + ((arrow + 2) % 3)] = -0.5f; } _vertexData.init(vertexdata); ///////////////////Color Data std::vector<GLubyte> colordata(18 * 4); //First arrow is red, second green and last blue for (size_t arrow(0); arrow < 3; ++arrow) for (size_t vertex(0); vertex < 6; ++vertex) { colordata[(arrow * 6 + vertex)* 4 + arrow] = 255; colordata[(arrow * 6 + vertex)* 4 + ((arrow + 1) % 3)] = 0; colordata[(arrow * 6 + vertex)* 4 + ((arrow + 2) % 3)] = 0; colordata[(arrow * 6 + vertex)* 4 + 3] = 255; //Alpha channel } _colorData.init(colordata); }
/*! \brief Sets up the vertex buffer objects for the quad. */ inline void init() { ///////////////////Vertex Data // Single quad, in pre-transformed screen coordinates std::vector<GLfloat> vertexdata(2 * 6); vertexdata[2 * 0 + 0] = -1; vertexdata[2 * 0 + 1] = -1; vertexdata[2 * 1 + 0] = 1; vertexdata[2 * 1 + 1] = -1; vertexdata[2 * 2 + 0] = 1; vertexdata[2 * 2 + 1] = 1; vertexdata[2 * 3 + 0] = 1; vertexdata[2 * 3 + 1] = 1; vertexdata[2 * 5 + 0] = -1; vertexdata[2 * 5 + 1] = 1; vertexdata[2 * 4 + 0] = -1; vertexdata[2 * 4 + 1] = -1; _vertexData.init(vertexdata); }