CallbackDrawable::CallbackDrawable(FlowPagedRenderer * renderer, osg::BoundingBox bounds) { _bbox = bounds; _renderer = renderer; setUseDisplayList(false); setUseVertexBufferObjects(true); }
FlexDrawable::FlexDrawable() : _solver(NULL) { setUseDisplayList( false ); setUseVertexBufferObjects( false ); setCullCallback( FlexUpdater::instance() ); osg::ref_ptr<osg::Program> program = new osg::Program; program->addShader( new osg::Shader(osg::Shader::VERTEX, flexVertCode) ); program->addShader( new osg::Shader(osg::Shader::FRAGMENT, flexFragCode) ); osg::StateSet* ss = getOrCreateStateSet(); ss->setAttributeAndModes( program.get() ); }
//------------------------------------------------------------------------------ void HudTextureElement::init() { Texture * tex_object = s_texturemanager.getResource(texture_name_); if (!tex_object) return; osg::ref_ptr<osg::Texture2D> tex = tex_object->getOsgTexture(); osg::ref_ptr<osg::Image> image = tex->getImage(); aspect_ratio_ = (float)image->s() / image->t(); tex->setFilter(osg::Texture2D::MIN_FILTER,osg::Texture2D::LINEAR); tex->setFilter(osg::Texture2D::MAG_FILTER,osg::Texture2D::LINEAR); tex->setBorderColor(osg::Vec4(0,0,0,0)); tex->setWrap(osg::Texture::WRAP_S, osg::Texture::CLAMP_TO_BORDER); tex->setWrap(osg::Texture::WRAP_T, osg::Texture::CLAMP_TO_BORDER); getOrCreateStateSet()->setTextureAttributeAndModes(0,tex.get(),osg::StateAttribute::ON); setUseDisplayList(false); setUseVertexBufferObjects(true); addPrimitiveSet(new osg::DrawArrays(GL_QUADS,0,4)); Color color = s_params.get<Color> ("hud." + section_ + ".color"); osg::Vec2Array* texcoord = new osg::Vec2Array(4); setTexCoordArray(0,texcoord); osg::Vec4Array * osg_color = new osg::Vec4Array(1); (*osg_color)[0].set(color.r_, color.g_, color.b_, color.a_); setColorArray(osg_color); setColorBinding(osg::Geometry::BIND_OVERALL); (*texcoord)[0].set(0,0); (*texcoord)[1].set(1,0); (*texcoord)[2].set(1,1); (*texcoord)[3].set(0,1); s_scene_manager.addObserver(ObserverCallbackFun0(this, &HudTextureElement::onResolutionChanged), SOE_RESOLUTION_CHANGED, &fp_group_); onResolutionChanged(); }
SomePointsRenderer(SomePointsGenerator*_generator) { setUseVertexBufferObjects(true); osg::Vec4Array* vAry2 = new osg::Vec4Array; vAry2->resize(_generator->getNumPrimitivesGenerated()); setVertexArray(vAry2); addPrimitiveSet( new osg::DrawArrays( GL_LINES, 0,_generator->getNumPrimitivesGenerated())); osg::StateSet* sset = getOrCreateStateSet(); ///hacking rendering order /*osg::BlendFunc* bf = new osg::BlendFunc(osg::BlendFunc::SRC_ALPHA, osg::BlendFunc::ONE_MINUS_SRC_ALPHA ); sset->setAttributeAndModes(bf);*/ sset->setMode( GL_LIGHTING, osg::StateAttribute::OFF ); getOrCreateVertexBufferObject(); sset->setAttribute( createRenderShader() ); }
SomePointsGenerator::SomePointsGenerator():osg::Geometry() { setUseVertexBufferObjects(true); osg::StateSet* sset = getOrCreateStateSet(); sset->setMode( GL_LIGHTING, osg::StateAttribute::OFF ); vAry = new osg::Vec4Array;; vAry->push_back( osg::Vec4(0,0,0,1) ); vAry->push_back( osg::Vec4(0,1,0,1) ); vAry->push_back( osg::Vec4(1,0,0,1) ); vAry->push_back( osg::Vec4(1,1,0,1 )); addPrimitiveSet( new osg::DrawArrays( GL_POINTS, 0, vAry->size() ) ); setVertexArray( vAry ); _program=createGeneratorShader() ; sset->setAttribute(_program ); // a generic cyclic animation value osg::Uniform* u_anim1( new osg::Uniform( "u_anim1", 0.9f ) ); u_anim1->setUpdateCallback( new SineAnimation( 4, 0.5, 0.5 ) ); sset->addUniform( u_anim1 ); }