本文整理汇总了C++中VertexArray::allocateData方法的典型用法代码示例。如果您正苦于以下问题:C++ VertexArray::allocateData方法的具体用法?C++ VertexArray::allocateData怎么用?C++ VertexArray::allocateData使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类VertexArray
的用法示例。
在下文中一共展示了VertexArray::allocateData方法的2个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: toVertexArray
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;
}
}
示例2: draw
/// 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);
}*/
}