本文整理汇总了C++中StateSet::setAttribute方法的典型用法代码示例。如果您正苦于以下问题:C++ StateSet::setAttribute方法的具体用法?C++ StateSet::setAttribute怎么用?C++ StateSet::setAttribute使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类StateSet
的用法示例。
在下文中一共展示了StateSet::setAttribute方法的7个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: createGeometry
/** Create PickBox geometry.
*/
void PickBox::createGeometry(const Vec4 &c1, const Vec4 &c2, const Vec4 &c3)
{
Geode *frame[NUM_BOX_COLORS];
int i;
// Create geometries:
_geom[0] = createWireframe(c1);
_geom[1] = createWireframe(c2);
_geom[2] = createWireframe(c3);
// Create geodes:
for (i = 0; i < NUM_BOX_COLORS; ++i)
{
frame[i] = new Geode();
frame[i]->addDrawable(_geom[i]);
frame[i]->setNodeMask(~0);
_switch->addChild(frame[i]);
}
updateWireframe(); // initialize wireframe color
// Thick lines and lighting off:
LineWidth *lineWidth = new LineWidth();
lineWidth->setWidth(4.0f);
StateSet *stateset = _switch->getOrCreateStateSet();
stateset->setAttribute(lineWidth);
stateset->setMode(GL_LIGHTING, StateAttribute::OFF);
_scale->addChild(_switch.get());
}
示例2: setObjectBlendState
void Panel::setObjectBlendState(Geode *geodeCurrent)
{
// retrieve or create a StateSet
StateSet *stateBlend = geodeCurrent->getOrCreateStateSet();
// create a new blend function using GL_SRC_ALPHA and GL_ONE
BlendFunc *bf = new BlendFunc(GL_SRC_ALPHA,GL_ONE);
// turn depth testing off
// stateBlend->setMode(GL_DEPTH_TEST,StateAttribute::OFF);
// turn standard OpenGL lighting on
// stateBlend->setMode(GL_LIGHTING,StateAttribute::ON);
// turn blending on
stateBlend->setMode(GL_BLEND,StateAttribute::ON);
// add rendering hint
stateBlend->setRenderingHint(StateSet::TRANSPARENT_BIN);
// add the blend function to the StateSet
stateBlend->setAttribute(bf);
// set the StateSet of the Geode to the one that was just created
geodeCurrent->setStateSet(stateBlend);
}
示例3: setSize
void TFColorWidget::setSize(int size)
{
LineWidth *width = new LineWidth();
width->setWidth(size);
StateSet *state = _geom->getOrCreateStateSet();
state->setAttribute(width, osg::StateAttribute::ON);
state->setMode(GL_LIGHTING, StateAttribute::OFF);
}
示例4: Geode
PositionAttitudeTransform *VideoGeode::createVideoSphere(float size, bool texRepeat)
{
Geode *sphere = new Geode();
sphere->addDrawable(new ShapeDrawable(new Sphere(Vec3(0, 0, 4), size)));
// assign the material to the sphere
StateSet *sphereStateSet = sphere->getOrCreateStateSet();
sphereStateSet->ref();
sphereStateSet->setAttribute(_material);
try {
sphereStateSet->setTextureAttributeAndModes(0, createVideoTexture(texRepeat), StateAttribute::ON);
} catch (char *e) {
throw e;
}
PositionAttitudeTransform *sphereTransform = new PositionAttitudeTransform();
sphereTransform->addChild(sphere);
return sphereTransform;
}
示例5: Widget
TFColorWidget::TFColorWidget(Interaction *interaction, Measure *b, int size)
: Widget()
, Events()
{
_interaction = interaction;
Geode *geode = new Geode();
_geom = new Geometry();
_geom->setUseDisplayList(false);
_vertices = new Vec3Array();
_vertices->push_back(Vec3(0, 0, 0));
_vertices->push_back(Vec3(0, 0, .2));
_vector = (*_vertices)[1] - (*_vertices)[0];
_vector.normalize();
_geom->setVertexArray(_vertices);
DrawElementsUInt *line = new DrawElementsUInt(osg::PrimitiveSet::LINES, 0);
line->push_back(0);
line->push_back(1);
_geom->addPrimitiveSet(line);
_colors = new Vec4Array(1);
(*_colors)[0].set(0.0, 0.0, 0.0, 1.0);
_geom->setColorArray(_colors);
_geom->setColorBinding(osg::Geometry::BIND_OVERALL);
geode->addDrawable(_geom);
_node->addChild(geode);
LineWidth *width = new LineWidth();
width->setWidth(size);
StateSet *state = _geom->getOrCreateStateSet();
state->setAttribute(width, osg::StateAttribute::ON);
state->setMode(GL_LIGHTING, StateAttribute::OFF);
_interaction->addListener(this, this);
}
示例6: DrawElementsUInt
PositionAttitudeTransform *VideoGeode::createVideoPlane(float sizeX, float sizeY, bool texRepeat)
{
// vertex array
Vec3Array *vertexArray = new Vec3Array();
sizeX /= 2.0;
sizeY /= 2.0;
vertexArray->push_back(Vec3(-sizeX, 0, -sizeY));
vertexArray->push_back(Vec3(sizeX, 0, -sizeY));
vertexArray->push_back(Vec3(sizeX, 0, sizeY));
vertexArray->push_back(Vec3(-sizeX, 0, sizeY));
/*vertexArray->push_back(Vec3(-sizeX, -sizeY, 0));
vertexArray->push_back(Vec3(sizeX, -sizeY, 0));
vertexArray->push_back(Vec3(sizeX, sizeY, 0));
vertexArray->push_back(Vec3(-sizeX, sizeY, 0));*/
// face array
DrawElementsUInt *faceArray = new DrawElementsUInt(PrimitiveSet::TRIANGLES, 0);
faceArray->push_back(0); // face 1
faceArray->push_back(1);
faceArray->push_back(2);
faceArray->push_back(2); // face 2
faceArray->push_back(3);
faceArray->push_back(0);
// normal array
Vec3Array *normalArray = new Vec3Array();
normalArray->push_back(Vec3(0, 0, 1));
// normal index
TemplateIndexArray<unsigned int, Array::UIntArrayType, 24, 4> *normalIndexArray;
normalIndexArray = new TemplateIndexArray<unsigned int, Array::UIntArrayType, 24, 4>();
normalIndexArray->push_back(0);
normalIndexArray->push_back(0);
normalIndexArray->push_back(0);
normalIndexArray->push_back(0);
// texture coordinates
Vec2Array *texCoords = new Vec2Array();
texCoords->push_back(Vec2(0.0f, 0.0f));
texCoords->push_back(Vec2(1.0f, 0.0f));
texCoords->push_back(Vec2(1.0f, 1.0f));
texCoords->push_back(Vec2(0.0f, 1.0f));
Geometry *geometry = new Geometry();
geometry->setVertexArray(vertexArray);
geometry->setNormalArray(normalArray);
geometry->setNormalIndices(normalIndexArray);
geometry->setNormalBinding(Geometry::BIND_PER_VERTEX);
geometry->setTexCoordArray(0, texCoords);
geometry->addPrimitiveSet(faceArray);
Geode *plane = new Geode();
plane->addDrawable(geometry);
// assign the material to the sphere
StateSet *planeStateSet = plane->getOrCreateStateSet();
planeStateSet->ref();
planeStateSet->setAttribute(_material);
try {
planeStateSet->setTextureAttributeAndModes(0, createVideoTexture(texRepeat), StateAttribute::ON);
} catch (char *e) {
throw e;
}
PositionAttitudeTransform *planeTransform = new PositionAttitudeTransform();
planeTransform->addChild(plane);
return planeTransform;
}
示例7: createOSGAxes
osg::Node* Shape::createOSGAxes(const base::Dimension3& dim)
{
const Real s = 1.5;
Real d = Math::minimum(0.06,Math::minimum(dim.x,dim.y,dim.z)/16.0);
Group* g = NewObj Group;
g->setName("debug");
// color the axes X:red, Y:green and Z:blue, with white end cones
StateSet* red = NewObj StateSet();
osg::Material* rmat = NewObj osg::Material();
Vec4 cred(1,0,0,1);
// mat->setEmission( osg::Material::FRONT_AND_BACK, Vec4(0,0,0,0) );
//mat->setAmbient( osg::Material::FRONT_AND_BACK, col );
rmat->setDiffuse( osg::Material::FRONT_AND_BACK, cred );
rmat->setSpecular( osg::Material::FRONT_AND_BACK, Vec4(1,1,1,0) );
rmat->setShininess( osg::Material::FRONT_AND_BACK, 1.0);
red->setAttribute( rmat );
StateSet* green = NewObj StateSet();
osg::Material* gmat = NewObj osg::Material();
Vec4 cgreen(0,1,0,1);
// mat->setEmission( osg::Material::FRONT_AND_BACK, Vec4(0,0,0,0) );
//mat->setAmbient( osg::Material::FRONT_AND_BACK, col );
gmat->setDiffuse( osg::Material::FRONT_AND_BACK, cgreen );
gmat->setSpecular( osg::Material::FRONT_AND_BACK, Vec4(1,1,1,0) );
gmat->setShininess( osg::Material::FRONT_AND_BACK, 1.0);
green->setAttribute( gmat );
StateSet* blue = NewObj StateSet();
osg::Material* bmat = NewObj osg::Material();
Vec4 cblue(0,0,1,1);
// mat->setEmission( osg::Material::FRONT_AND_BACK, Vec4(0,0,0,0) );
//mat->setAmbient( osg::Material::FRONT_AND_BACK, col );
bmat->setDiffuse( osg::Material::FRONT_AND_BACK, cblue );
bmat->setSpecular( osg::Material::FRONT_AND_BACK, Vec4(1,1,1,0) );
bmat->setShininess( osg::Material::FRONT_AND_BACK, 1.0);
blue->setAttribute( bmat );
StateSet* white = NewObj StateSet();
osg::Material* wmat = NewObj osg::Material();
Vec4 cwhite(1,1,1,1);
// mat->setEmission( osg::Material::FRONT_AND_BACK, Vec4(0,0,0,0) );
//mat->setAmbient( osg::Material::FRONT_AND_BACK, col );
wmat->setDiffuse( osg::Material::FRONT_AND_BACK, cwhite );
wmat->setSpecular( osg::Material::FRONT_AND_BACK, Vec4(1,1,1,0) );
wmat->setShininess( osg::Material::FRONT_AND_BACK, 1.0);
white->setAttribute( wmat );
// a long Clyinder for the axis and a cone-like cylinder
// for the arrow head of each X,Y and Z.
MatrixTransform* xrot = NewObj MatrixTransform();
xrot->setMatrix(osg::Matrix::rotate(consts::Pi/2.0,Vec3(0,1,0)));
xrot->postMult(osg::Matrix::translate(s*dim.x/4.0,0,0));
g->addChild(xrot);
MatrixTransform* yrot = NewObj MatrixTransform();
yrot->setMatrix(osg::Matrix::rotate(consts::Pi/2.0,Vec3(-1,0,0)));
yrot->postMult(osg::Matrix::translate(0,s*dim.y/4.0,0));
g->addChild(yrot);
MatrixTransform* zrot = NewObj MatrixTransform();
zrot->setMatrix(osg::Matrix::translate(0,0,s*dim.z/4.0));
g->addChild(zrot);
// the cylinder axes
ref<Cylinder> xc(NewObj Cylinder(s*dim.x/2.0,d));
xrot->addChild(xc->createOSGVisual());
xrot->setStateSet(red);
ref<Cylinder> yc(NewObj Cylinder(s*dim.y/2.0,d));
yrot->addChild(yc->createOSGVisual());
yrot->setStateSet(green);
ref<Cylinder> zc(NewObj Cylinder(s*dim.z/2.0,d));
zrot->addChild(zc->createOSGVisual());
zrot->setStateSet(blue);
// Translate each axis cone to the end
MatrixTransform* xtrans = NewObj MatrixTransform();
xtrans->setMatrix(osg::Matrix::translate(0,0,s*dim.x/4.0+d));
xrot->addChild(xtrans);
MatrixTransform* ytrans = NewObj MatrixTransform();
ytrans->setMatrix(osg::Matrix::translate(0,0,s*dim.y/4.0+d));
yrot->addChild(ytrans);
MatrixTransform* ztrans = NewObj MatrixTransform();
ztrans->setMatrix(osg::Matrix::translate(0,0,s*dim.z/4.0+d));
zrot->addChild(ztrans);
// the end cones
ref<Cone> cone(NewObj Cone(4*d,2*d));
osg::Node* coneNode = cone->createOSGVisual();
coneNode->setStateSet(white);
xtrans->addChild(coneNode);
ytrans->addChild(coneNode);
//.........这里部分代码省略.........