Example #1
0
void GeometryObject::toVertexArray(VertexArray& varray) const
{
	VertexFormat::Attribute position_attribute;
	VertexFormat::Attribute color_attribute;

	position_attribute.hint = VertexFormat::Position;
	color_attribute.hint    = VertexFormat::Color;

	position_attribute.numComponents = 3;
	position_attribute.size = sizeof(float);

	color_attribute.numComponents = 4;
	color_attribute.size = sizeof(float);

	varray.format.attributes.push_back(position_attribute);
	varray.format.attributes.push_back(color_attribute   );

	// Two channels of data need to be copied now
	varray.allocateData(vertices.size());

	struct vertex_format_struct
	{
		vec3 p;
		vec4 c;
	};

	vertex_format_struct* vertex_data = reinterpret_cast<vertex_format_struct*>(&varray._data[0]);

	for(std::size_t i = 0; i < vertices.size(); ++i)
	{
		vertex_data[i].p = vertices[i];
		vertex_data[i].c.x = (float)colors[i].r / 255.f;
		vertex_data[i].c.y = (float)colors[i].g / 255.f;
		vertex_data[i].c.z = (float)colors[i].b / 255.f;
		vertex_data[i].c.w = (float)colors[i].a / 255.f;
	}
}
Example #2
0
/// Callback to render itself, renders children
void UIView::draw(GraphicsDevice* renderer, mat4 transform)
{



	VertexArray va;
	va.addAttribute(sizeof(float), 2, VertexFormat::Position);
	va.addAttribute(sizeof(float), 4, VertexFormat::Color);

	va.allocateData(6);

	struct vertex_f
	{
		vec2 p;
		vec4 c;
	};

	vertex_f* va_raw = reinterpret_cast<vertex_f*>(&va.data[0]);

	va_raw[0].p = vec2(size.x, 0.f);
	va_raw[1].p = vec2(size.x, size.y);
	va_raw[2].p = vec2(0.f, size.y);

	va_raw[3].p = vec2(size.x, 0.f);
	va_raw[4].p = vec2(0.f, size.y);
	va_raw[5].p = vec2(0.f, 0.f);

	va_raw[0].c = vec4(float(col.r) / 255.f, float(col.g) / 255.f, float(col.b) / 255.f, 1.f);
	va_raw[1].c = vec4(float(col.r) / 255.f, float(col.g) / 255.f, float(col.b) / 255.f, 1.f);
	va_raw[2].c = vec4(float(col.r) / 255.f, float(col.g) / 255.f, float(col.b) / 255.f, 1.f);
	va_raw[3].c = vec4(float(col.r) / 255.f, float(col.g) / 255.f, float(col.b) / 255.f, 1.f);
	va_raw[4].c = vec4(float(col.r) / 255.f, float(col.g) / 255.f, float(col.b) / 255.f, 1.f);
	va_raw[5].c = vec4(float(col.r) / 255.f, float(col.g) / 255.f, float(col.b) / 255.f, 1.f);

	renderer->enableVertexAttribArray(0);
	renderer->enableVertexAttribArray(1);

	renderer->setVertexAttribPointer(0, 2, GL_FLOAT, false, va.getVertexSize(), &va.data[0] + va.getAttributeOffset(0));
	renderer->setVertexAttribPointer(1, 4, GL_FLOAT, false, va.getVertexSize(), &va.data[0] + va.getAttributeOffset(1));

	renderer->setModelMatrix(transform);
	renderer->setDefaultTexture();
	renderer->drawArrays(Render::Primitive::Triangles, 0, 6);

	renderer->disableVertexAttribArray(0);
	renderer->disableVertexAttribArray(1);

	// back
	
	/*if(components.size() == 0)
	{
		RectangleShape backgroundRect;
		backgroundRect.setColor(Color::Grass);
		backgroundRect.setRect(getBounds());
		renderer->draw(backgroundRect);
	}*/
	

	/*
	if(m_children.size() > 0)
	{
		RectangleShape scrollBarBackground;
		scrollBarBackground.setSize(17.f, getSize().y);
		scrollBarBackground.setPosition(getPosition().x + getSize().y - 17.f, getPosition().y);
		scrollBarBackground.setColor(Color::Blue);
		renderer->draw(scrollBarBackground);

		float lowestY = m_children[0]->getPosition().y;
		float highestY = m_children[0]->getPosition().y + m_children[0]->getSize().y;
		for(std::size_t i = 0; i < m_children.size(); ++i)
		{
			if(m_children[i]->getPosition().y < lowestY)
			{
				lowestY = m_children[i]->getPosition().y;
			}

			if(m_children[i]->getPosition().y + m_children[i]->getSize().y > highestY)
			{
				highestY = m_children[i]->getPosition().y + m_children[i]->getSize().y;
			}
		}

		Log("Window %f to %f, Content %f to %f", getPosition().y, getPosition().y + getSize().y, lowestY, highestY);

		float beginPercent = (getPosition().y - lowestY) / (highestY  - lowestY);
		float endPercent = (getPosition().y + getSize().y - lowestY) / (highestY  - lowestY);

		Log("You are viewing %f pc of the content", beginPercent);

		RectangleShape scrollBarPaddle;
		scrollBarPaddle.setSize(17.f, getSize().y * (endPercent-beginPercent));
		scrollBarPaddle.setPosition(getPosition().x + getSize().y - 17.f, getPosition().y + getSize().y * beginPercent);
		scrollBarPaddle.setColor(Color::Red);
		renderer->draw(scrollBarPaddle);
	}*/
}