本文整理汇总了C++中VertexArray::push_back方法的典型用法代码示例。如果您正苦于以下问题:C++ VertexArray::push_back方法的具体用法?C++ VertexArray::push_back怎么用?C++ VertexArray::push_back使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类VertexArray
的用法示例。
在下文中一共展示了VertexArray::push_back方法的2个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: LoadObjFileStateMachine
void LoadObjFileStateMachine(U8 * line, VertexArray & varray)
{
static Vector3 v;
switch (line[0])
{
case 'v':
switch (line[1])
{
case ' ':
/*
Simple vertex
*/
sscanf((const char *)line,"v %f %f %f",&v.x,&v.y,&v.z);
varray.push_back(v);
break;
default:
break;
}
break;
default:
break;
}
}
示例2: _buildChunkVarr
void World::_buildChunkVarr(int chunkX,int chunkZ,VertexArray& varr) const {
auto& c = _getChunk(chunkX,chunkZ);
//std::cout << "Building chunk varr" << std::endl;
//int vertCount = varr.size();
for(int x=-1;x<=Chunk::WIDTH;++x) {
for(int z=-1;z<=Chunk::WIDTH;++z) {
for(int y=-1;y<=Chunk::HEIGHT;++y) {
bool validX = (x >= 0 && x < Chunk::WIDTH),
validY = (y >= 0 && y < Chunk::HEIGHT),
validZ = (z >= 0 && z < Chunk::WIDTH);
//if((validX && validY && validZ && c.blocks[x][z][y].filled) ||
// (validY && ((!validX && validZ) || (validX && !validZ)) &&
if(validY && getBlock(chunkX*Chunk::WIDTH+x,
y,
chunkZ*Chunk::WIDTH+z).filled) {
if((x < 0 || z < 0) && y >= SEALEVEL) {
//std::cout << Vec3i{{x,y,z}} << std::endl;
}
continue;
}
float fx = x,fy = y,fz = z;
if(validY && validZ) {
auto normal = Vec3f{{1,0,0}};
if(x > 0 && c.blocks[x-1][z][y].filled) {
auto color = c.blocks[x-1][z][y].color;
varr.push_back({ {{fx,fy, fz}},
color,normal });
varr.push_back({ {{fx,fy+1,fz}},
color,normal });
varr.push_back({ {{fx,fy+1,fz+1}},
color,normal });
varr.push_back({ {{fx,fy, fz+1}},
color,normal });
}
if(x < Chunk::WIDTH-1 && c.blocks[x+1][z][y].filled) {
auto color = c.blocks[x+1][z][y].color;
varr.push_back({ {{fx+1,fy, fz}},
color,-normal });
varr.push_back({ {{fx+1,fy, fz+1}},
color,-normal });
varr.push_back({ {{fx+1,fy+1,fz+1}},
color,-normal });
varr.push_back({ {{fx+1,fy+1,fz}},
color,-normal });
}
}
if(validX && validY) {
auto normal = Vec3f{{0,0,1}};
if(z > 0 && c.blocks[x][z-1][y].filled) {
auto color = c.blocks[x][z-1][y].color;
varr.push_back({ {{fx, fy, fz}},color,normal});
varr.push_back({ {{fx+1,fy, fz}},color,normal});
varr.push_back({ {{fx+1,fy+1,fz}},color,normal});
varr.push_back({ {{fx, fy+1,fz}},color,normal});
}
if(z < Chunk::WIDTH-1 && c.blocks[x][z+1][y].filled) {
auto color = c.blocks[x][z+1][y].color;
varr.push_back({ {{fx, fy, fz+1}},
color,-normal });
varr.push_back({ {{fx, fy+1,fz+1}},
color,-normal });
varr.push_back({ {{fx+1,fy+1,fz+1}},
color,-normal });
varr.push_back({ {{fx+1,fy, fz+1}},
color,-normal });
}
}
if(validX && validZ) {
auto normal = Vec3f{{0,1,0}};
if(y > 0 && c.blocks[x][z][y-1].filled) {
auto color = c.blocks[x][z][y-1].color;
varr.push_back({ {{fx, fy,fz}}, color,normal});
varr.push_back({ {{fx, fy,fz+1}},color,normal});
varr.push_back({ {{fx+1,fy,fz+1}},color,normal});
varr.push_back({ {{fx+1,fy,fz}}, color,normal});
}
if(y < Chunk::HEIGHT-1 && c.blocks[x][z][y+1].filled) {
auto color = c.blocks[x][z][y+1].color;
varr.push_back({ {{fx, fy+1,fz}}, color,-normal});
varr.push_back({ {{fx+1,fy+1,fz}}, color,-normal});
varr.push_back({ {{fx+1,fy+1,fz+1}},color,-normal});
varr.push_back({ {{fx, fy+1,fz+1}},color,-normal});
}
}
}
}
}
//std::cout << varr.size()-vertCount << " verts" << std::endl;
}