Exemplo n.º 1
0
	/*! \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);
	}
Exemplo n.º 2
0
	/*! \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);
	}