本文整理汇总了C++中GeoPositions3fPtr::push_back方法的典型用法代码示例。如果您正苦于以下问题:C++ GeoPositions3fPtr::push_back方法的具体用法?C++ GeoPositions3fPtr::push_back怎么用?C++ GeoPositions3fPtr::push_back使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类GeoPositions3fPtr
的用法示例。
在下文中一共展示了GeoPositions3fPtr::push_back方法的6个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: makePolygon
OSG::NodePtr makePolygon(double pntData[][3], int numPoints) {
OSG::GeometryPtr geoPtr = OSG::Geometry::create();
OSG::NodePtr nodePtr = OSG::Node::create();
GeoPositions3fPtr pnts = GeoPositions3f::create();
GeoNormals3fPtr norms = GeoNormals3f::create();
GeoTexCoords2fPtr tex = GeoTexCoords2f::create();
GeoIndicesUI32Ptr indices = GeoIndicesUI32::create();
GeoPLengthsUI32Ptr lens = GeoPLengthsUI32::create();
GeoPTypesUI8Ptr types = GeoPTypesUI8::create();
//Set up the properties according to the geometry defined above
beginEditCP(pnts);
beginEditCP(norms);
for(int i = 0; i < numPoints; i++)
{
pnts->push_back(Pnt3f(pntData[i][0],
pntData[i][1],
pntData[i][2]));
indices->push_back(2*i);
norms->push_back(Vec3f(0.0, 0.0, pntData[i][2]));
indices->push_back(2*i + 1);
}
endEditCP(pnts);
endEditCP(norms);
beginEditCP(types);
beginEditCP(lens);
types->push_back(GL_POLYGON);
lens->push_back(numPoints);
endEditCP(types);
endEditCP(lens);
beginEditCP(geoPtr);
geoPtr->setMaterial(getDefaultMaterial());
geoPtr->setPositions(pnts);
geoPtr->setNormals(norms);
geoPtr->setIndices(indices);
geoPtr->editMFIndexMapping()->push_back(Geometry::MapPosition |
Geometry::MapNormal);
geoPtr->setTypes(types);
geoPtr->setLengths(lens);
endEditCP(geoPtr);
nodePtr->setCore(geoPtr);
return nodePtr;
}
示例2: createCoordinateCross
// Create the coordinate cross
NodePtr createCoordinateCross()
{
GeometryPtr geoPtr = Geometry::create();
beginEditCP(geoPtr);
{
GeoPTypesUI8Ptr typesPtr = GeoPTypesUI8::create();
typesPtr->push_back(GL_LINES);
geoPtr->setTypes(typesPtr);
GeoPLengthsUI32Ptr lensPtr = GeoPLengthsUI32::create();
lensPtr->push_back(6);
geoPtr->setLengths(lensPtr);
GeoPositions3fPtr posPtr = GeoPositions3f::create();
posPtr->push_back(Vec3f(-0.1f, 0.f, 0.f));
posPtr->push_back(Vec3f(1.f, 0.f, 0.f));
posPtr->push_back(Vec3f(0.f, -0.1f, 0.f));
posPtr->push_back(Vec3f(0.f, 1.f, 0.f));
posPtr->push_back(Vec3f(0.f, 0.f, -0.1f));
posPtr->push_back(Vec3f(0.f, 0.f, 1.f));
geoPtr->setPositions(posPtr);
GeoColors3fPtr colorsPtr = GeoColors3f::create();
colorsPtr->push_back(Color3f(1.f, 0.f, 0.f));
colorsPtr->push_back(Color3f(0.f, 1.f, 0.f));
colorsPtr->push_back(Color3f(0.f, 0.f, 1.f));
geoPtr->setColors(colorsPtr);
GeoIndicesUI32Ptr indicesPtr = GeoIndicesUI32::create();
// X Axis
indicesPtr->push_back(0);
indicesPtr->push_back(0);
indicesPtr->push_back(1);
indicesPtr->push_back(0);
// Y Axis
indicesPtr->push_back(2);
indicesPtr->push_back(1);
indicesPtr->push_back(3);
indicesPtr->push_back(1);
// Z Axis
indicesPtr->push_back(4);
indicesPtr->push_back(2);
indicesPtr->push_back(5);
indicesPtr->push_back(2);
geoPtr->setIndices(indicesPtr);
geoPtr->editMFIndexMapping()->clear();
geoPtr->editMFIndexMapping()->push_back(Geometry::MapPosition);
geoPtr->editMFIndexMapping()->push_back(Geometry::MapColor);
SimpleMaterialPtr matPtr = SimpleMaterial::create();
geoPtr->setMaterial(matPtr);
}
endEditCP(geoPtr);
NodePtr nodePtr = Node::create();
beginEditCP(nodePtr, Node::CoreFieldMask);
{
nodePtr->setCore(geoPtr);
}
endEditCP(nodePtr, Node::CoreFieldMask);
return nodePtr;
}
示例3: createMetrics
// Create the metrics
NodePtr createMetrics(TextFace *face, Real32 scale, const TextLayoutParam &layoutParam,
const TextLayoutResult &layoutResult)
{
GeometryPtr geoPtr = Geometry::create();
beginEditCP(geoPtr);
{
GeoPTypesUI8Ptr typesPtr = GeoPTypesUI8::create();
geoPtr->setTypes(typesPtr);
GeoPLengthsUI32Ptr lensPtr = GeoPLengthsUI32::create();
geoPtr->setLengths(lensPtr);
GeoPositions3fPtr posPtr = GeoPositions3f::create();
geoPtr->setPositions(posPtr);
GeoColors3fPtr colorsPtr = GeoColors3f::create();
colorsPtr->push_back(Color3f(0.f, 0.f, 1.f));
colorsPtr->push_back(Color3f(1.f, 0.f, 0.f));
colorsPtr->push_back(Color3f(0.f, 1.f, 0.f));
colorsPtr->push_back(Color3f(1.f, 1.f, 0.f));
geoPtr->setColors(colorsPtr);
GeoIndicesUI32Ptr indicesPtr = GeoIndicesUI32::create();
geoPtr->setIndices(indicesPtr);
UInt32 i, numGlyphs = layoutResult.getNumGlyphs();
for (i = 0; i < numGlyphs; ++i)
{
const TextGlyph &glyph = face->getGlyph(layoutResult.indices[i]);
typesPtr->push_back(GL_LINE_LOOP);
lensPtr->push_back(4);
const Vec2f &pos = layoutResult.positions[i];
Real32 left = pos.x() * scale;
Real32 right = (pos.x() + glyph.getWidth()) * scale;
Real32 top = pos.y() * scale;
Real32 bottom = (pos.y() - glyph.getHeight()) * scale;
UInt32 posOffset = posPtr->size();
posPtr->push_back(Vec3f(left, bottom, 0.f));
posPtr->push_back(Vec3f(right, bottom, 0.f));
posPtr->push_back(Vec3f(right, top, 0.f));
posPtr->push_back(Vec3f(left, top, 0.f));
indicesPtr->push_back(posOffset);
indicesPtr->push_back(0);
indicesPtr->push_back(posOffset + 1);
indicesPtr->push_back(0);
indicesPtr->push_back(posOffset + 2);
indicesPtr->push_back(0);
indicesPtr->push_back(posOffset + 3);
indicesPtr->push_back(0);
}
// Bounding box
Vec2f lowerLeft, upperRight;
face->calculateBoundingBox(layoutResult, lowerLeft, upperRight);
typesPtr->push_back(GL_LINE_LOOP);
lensPtr->push_back(4);
Real32 left = lowerLeft.x() * scale;
Real32 right = upperRight.x() * scale;
Real32 top = upperRight.y() * scale;
Real32 bottom = lowerLeft.y() * scale;
UInt32 posOffset = posPtr->size();
posPtr->push_back(Vec3f(left, bottom, 0.f));
posPtr->push_back(Vec3f(right, bottom, 0.f));
posPtr->push_back(Vec3f(right, top, 0.f));
posPtr->push_back(Vec3f(left, top, 0.f));
indicesPtr->push_back(posOffset);
indicesPtr->push_back(1);
indicesPtr->push_back(posOffset + 1);
indicesPtr->push_back(1);
indicesPtr->push_back(posOffset + 2);
indicesPtr->push_back(1);
indicesPtr->push_back(posOffset + 3);
indicesPtr->push_back(1);
// Text bounds & Line bounds
Vec2f pos, textPos, offset;
if (layoutParam.horizontal == true)
{
Real32 lineHeight = face->getHoriAscent() - face->getHoriDescent();
Real32 spacing = layoutParam.spacing * lineHeight;
if (layoutParam.topToBottom == true)
{
switch (layoutParam.minorAlignment)
{
case TextLayoutParam::ALIGN_BEGIN:
break;
case TextLayoutParam::ALIGN_FIRST:
pos[1] = textPos[1] = face->getHoriAscent();
break;
case TextLayoutParam::ALIGN_MIDDLE:
pos[1] = textPos[1] = (spacing * (layoutResult.lineBounds.size() - 1) + lineHeight) / 2.f;
break;
case TextLayoutParam::ALIGN_END:
pos[1] = textPos[1] = spacing * (layoutResult.lineBounds.size() - 1) + lineHeight;
break;
}
offset.setValues(0.f, -spacing);
}
else
//.........这里部分代码省略.........
示例4: main
// Initialize GLUT & OpenSG and set up the scene
int main(int argc, char **argv)
{
// OSG init
osgInit(argc,argv);
// GLUT init
int winid = setupGLUT(&argc, argv);
// the connection between GLUT and OpenSG
GLUTWindowPtr gwin= GLUTWindow::create();
gwin->setId(winid);
gwin->init();
// create the scene
/*
In the previous example, the colors and positions used the same
indices. That might not always be the preferred way, and it might not
make sense for other properties, e.g. normals.
It is possible to assign a different index for every property. See the
indices section below for details.
*/
/*
The initial setup is the same as in the single indexed geometry...
*/
GeoPTypesPtr type = GeoPTypesUI8::create();
beginEditCP(type, GeoPTypesUI8::GeoPropDataFieldMask);
{
type->push_back(GL_POLYGON );
type->push_back(GL_TRIANGLES);
type->push_back(GL_QUADS );
}
endEditCP (type, GeoPTypesUI8::GeoPropDataFieldMask);
GeoPLengthsPtr lens = GeoPLengthsUI32::create();
beginEditCP(lens, GeoPLengthsUI32::GeoPropDataFieldMask);
{
lens->push_back(4);
lens->push_back(6);
lens->push_back(8);
}
endEditCP (lens, GeoPLengthsUI32::GeoPropDataFieldMask);
GeoPositions3fPtr pnts = GeoPositions3f::create();
beginEditCP(pnts, GeoPositions3f::GeoPropDataFieldMask);
{
// the base
pnts->push_back(Pnt3f(-1, -1, -1));
pnts->push_back(Pnt3f(-1, -1, 1));
pnts->push_back(Pnt3f( 1, -1, 1));
pnts->push_back(Pnt3f( 1, -1, -1));
// the roof base
pnts->push_back(Pnt3f(-1, 0, -1));
pnts->push_back(Pnt3f(-1, 0, 1));
pnts->push_back(Pnt3f( 1, 0, 1));
pnts->push_back(Pnt3f( 1, 0, -1));
// the gable
pnts->push_back(Pnt3f( 0, 1, -1));
pnts->push_back(Pnt3f( 0, 1, 1));
}
endEditCP (pnts, GeoPositions3f::GeoPropDataFieldMask);
GeoColors3fPtr colors = GeoColors3f::create();
beginEditCP(colors, GeoColors3f::GeoPropDataFieldMask);
{
colors->push_back(Color3f(1, 1, 0));
colors->push_back(Color3f(1, 0, 0));
colors->push_back(Color3f(1, 0, 0));
colors->push_back(Color3f(1, 1, 0));
colors->push_back(Color3f(0, 1, 1));
colors->push_back(Color3f(1, 0, 1));
}
endEditCP (colors, GeoPositions3f::GeoPropDataFieldMask);
/*
A new property: normals.
They are used for lighting calculations and have to point away from the
surface. Normals are standard vectors.
*/
GeoNormals3fPtr norms = GeoNormals3f::create();
beginEditCP(norms, GeoNormals3f::GeoPropDataFieldMask);
{
norms->push_back(Vec3f(-1, 0, 0));
norms->push_back(Vec3f( 1, 0, 0));
norms->push_back(Vec3f( 0, -1, 0));
norms->push_back(Vec3f( 0, 1, 0));
norms->push_back(Vec3f( 0, 0, -1));
norms->push_back(Vec3f( 0, 0, 1));
}
endEditCP (norms, GeoNormals3f::GeoPropDataFieldMask);
/*
To use different indices for different attributes they have to be
//.........这里部分代码省略.........
示例5: traverseGSet
//.........这里部分代码省略.........
FDEBUG(("PerformerLoader::traverseGSet: found "
"primitive PFGS_FLAT_TRIFANS!\n"));
cn_buffer = 2;
vertcount = lencount;
break;
}
FINFO(("vc %d ", vertcount));
// Fill the Geometry
GeometryPtr ogeo = Geometry::create();
beginEditCP(ogeo);
if(gstate)
{
ogeo->setMaterial(traverseGState(node, gstate));
}
else
{
ogeo->setMaterial(NullFC);
}
GeoPTypesPtr otypes = GeoPTypesUI8::create();
beginEditCP(otypes);
if (lenlist = gset->getPrimLengths())
{
GeoPLengthsUI32Ptr olens = GeoPLengthsUI32::create();
beginEditCP(olens);
for (int i = 0; i < primcount; i++)
{
otypes->push_back(oprimtype);
olens->push_back(lenlist[i]);
}
endEditCP(olens);
ogeo->setLengths(olens);
}
else
{
otypes->push_back(oprimtype);
lenlist = &vertcount;
lencount = vertcount;
if(primcount != 1)
FWARNING(("PerformerLoader::traverseGSet: No lens, but "
"primcount=%d.\n", primcount));
}
endEditCP(otypes);
ogeo->setTypes(otypes);
// Convert the geo attributes
int pmin, pmax;
pfVec3 *pverts;
ushort *pinds;
GeoPositions3fPtr opos = GeoPositions3f::create();
GeoIndicesUI16Ptr oind = GeoIndicesUI16::create();
beginEditCP(opos);
beginEditCP(oind);
gset->getAttrLists(PFGS_COORD3, (void**)&pverts, &pinds);
示例6: createRose
NodePtr createRose()
{
GeometryPtr geoPtr = Geometry::create();
beginEditCP(geoPtr);
{
GeoPTypesUI8Ptr typesPtr = GeoPTypesUI8::create();
typesPtr->push_back(GL_QUADS);
geoPtr->setTypes(typesPtr);
GeoPLengthsUI32Ptr lensPtr = GeoPLengthsUI32::create();
lensPtr->push_back(96);
geoPtr->setLengths(lensPtr);
GeoPositions3fPtr posPtr = GeoPositions3f::create();
// top
posPtr->push_back(Vec3f( 0.00f, 1.00f, 0.00f));
posPtr->push_back(Vec3f( 0.00f, 0.10f, 0.10f));
posPtr->push_back(Vec3f( 0.05f, 0.05f, 0.05f));
posPtr->push_back(Vec3f( 0.10f, 0.10f, 0.00f));
posPtr->push_back(Vec3f( 0.00f, 1.00f, 0.00f));
posPtr->push_back(Vec3f( 0.10f, 0.10f, 0.00f));
posPtr->push_back(Vec3f( 0.05f, 0.05f, -0.05f));
posPtr->push_back(Vec3f( 0.00f, 0.10f, -0.10f));
posPtr->push_back(Vec3f( 0.00f, 1.00f, 0.00f));
posPtr->push_back(Vec3f( 0.00f, 0.10f, -0.10f));
posPtr->push_back(Vec3f(-0.05f, 0.05f, -0.05f));
posPtr->push_back(Vec3f(-0.10f, 0.10f, 0.00f));
posPtr->push_back(Vec3f( 0.00f, 1.00f, 0.00f));
posPtr->push_back(Vec3f(-0.10f, 0.10f, 0.00f));
posPtr->push_back(Vec3f(-0.05f, 0.05f, 0.05f));
posPtr->push_back(Vec3f( 0.00f, 0.10f, 0.10f));
// bottom
posPtr->push_back(Vec3f( 0.00f, -1.00f, 0.00f));
posPtr->push_back(Vec3f( 0.10f, -0.10f, 0.00f));
posPtr->push_back(Vec3f( 0.05f, -0.05f, 0.05f));
posPtr->push_back(Vec3f( 0.00f, -0.10f, 0.10f));
posPtr->push_back(Vec3f( 0.00f, -1.00f, 0.00f));
posPtr->push_back(Vec3f( 0.00f, -0.10f, 0.10f));
posPtr->push_back(Vec3f(-0.05f, -0.05f, 0.05f));
posPtr->push_back(Vec3f(-0.10f, -0.10f, 0.00f));
posPtr->push_back(Vec3f( 0.00f, -1.00f, 0.00f));
posPtr->push_back(Vec3f(-0.10f, -0.10f, 0.00f));
posPtr->push_back(Vec3f(-0.05f, -0.05f, -0.05f));
posPtr->push_back(Vec3f( 0.00f, -0.10f, -0.10f));
posPtr->push_back(Vec3f( 0.00f, -1.00f, 0.00f));
posPtr->push_back(Vec3f( 0.00f, -0.10f, -0.10f));
posPtr->push_back(Vec3f( 0.05f, -0.05f, -0.05f));
posPtr->push_back(Vec3f( 0.10f, -0.10f, 0.00f));
// left
posPtr->push_back(Vec3f(-1.00f, 0.00f, 0.00f));
posPtr->push_back(Vec3f(-0.10f, -0.10f, 0.00f));
posPtr->push_back(Vec3f(-0.05f, -0.05f, 0.05f));
posPtr->push_back(Vec3f(-0.10f, 0.00f, 0.10f));
posPtr->push_back(Vec3f(-1.00f, 0.00f, 0.00f));
posPtr->push_back(Vec3f(-0.10f, 0.00f, 0.10f));
posPtr->push_back(Vec3f(-0.05f, 0.05f, 0.05f));
posPtr->push_back(Vec3f(-0.10f, 0.10f, 0.00f));
posPtr->push_back(Vec3f(-1.00f, 0.00f, 0.00f));
posPtr->push_back(Vec3f(-0.10f, 0.10f, 0.00f));
posPtr->push_back(Vec3f(-0.05f, 0.05f, -0.05f));
posPtr->push_back(Vec3f(-0.10f, 0.00f, -0.10f));
posPtr->push_back(Vec3f(-1.00f, 0.00f, 0.00f));
posPtr->push_back(Vec3f(-0.10f, 0.00f, -0.10f));
posPtr->push_back(Vec3f(-0.05f, -0.05f, -0.05f));
posPtr->push_back(Vec3f(-0.10f, -0.10f, 0.00f));
// right
posPtr->push_back(Vec3f( 1.00f, 0.00f, 0.00f));
posPtr->push_back(Vec3f( 0.10f, 0.00f, 0.10f));
posPtr->push_back(Vec3f( 0.05f, -0.05f, 0.05f));
posPtr->push_back(Vec3f( 0.10f, -0.10f, 0.00f));
posPtr->push_back(Vec3f( 1.00f, 0.00f, 0.00f));
posPtr->push_back(Vec3f( 0.10f, -0.10f, 0.00f));
posPtr->push_back(Vec3f( 0.05f, -0.05f, -0.05f));
posPtr->push_back(Vec3f( 0.10f, 0.00f, -0.10f));
posPtr->push_back(Vec3f( 1.00f, 0.00f, 0.00f));
posPtr->push_back(Vec3f( 0.10f, 0.00f, -0.10f));
posPtr->push_back(Vec3f( 0.05f, 0.05f, -0.05f));
posPtr->push_back(Vec3f( 0.10f, 0.10f, 0.00f));
posPtr->push_back(Vec3f( 1.00f, 0.00f, 0.00f));
posPtr->push_back(Vec3f( 0.10f, 0.10f, 0.00f));
posPtr->push_back(Vec3f( 0.05f, 0.05f, 0.05f));
posPtr->push_back(Vec3f( 0.10f, 0.00f, 0.10f));
// front
//.........这里部分代码省略.........