Hi Art, One can't remove state from OpenGL, its a state machine, you only modify its current state. The OSG manages this by using osg::State which maintains a stack of StateSet that are currently applied, and stacks for the individual modes and attributes that are applied. When a stateset is popped the modes/attributes that were applied by the parent StateSet are applied. These applies are all done lazily - so if the state doesn't change then no OpenGL class are made.
When non modes or attributes are left on the stack once everything is popped off then default modes are used, and default constructed versions of the attributes are applied to restore OpenGL state back to defaults. Robert. On Tue, Apr 15, 2008 at 12:27 PM, Art Tevs <[EMAIL PROTECTED]> wrote: > Hi Robert, > > no the question wasn't how to remove stateattribute > from osg, but how to reset/remove state from opengl. > > Imagine following situation: > > A > / \ > B C > > Node B set some attribute. Node C doesn't have this > attribute, however since there seems no "dis"apply > method, C would get this attribute too (of course > assuming B and C are rendered sequentially). > > In the stateset->removeAttribute() there is a call to > setAssociatedModes() which probably disables the > corresponding mode of the attribute. However, what to > do if there is no mode associated with the attribute? > > How is this managed? > > > --- Robert Osfield <[EMAIL PROTECTED]> schrieb: > > > Hi Art, > > > > If you want to remove a mode or attribute you simply > > one of use: > > > > stateset->removeMode(..); > > stateset->removeAttribute(..); > > stateset->removeTextureAttribute(unit,..); > > > > This will make the StateSet inherit from above. > > > > As for the default set, OpenGL defaults are almost > > always used, but not > > quite always. The GL_DEPTH_TEST is on by default in > > the OSG. Defaults for > > the attributes can be found in the default > > constructed versions of those > > attributes. > > > > Robert. > > > > On Tue, Apr 15, 2008 at 11:14 AM, Art Tevs > > <[EMAIL PROTECTED]> wrote: > > > > > Hi folks, > > > > > > imagine I have a StateAttribute which do set the > > > OpenGL's pipeline in some state. Now this > > attribute is > > > applied for a node and the corresponding subgraph > > or > > > only that node is rendered with this attribute. > > > > > > However there is no call to disapply this > > attribute. I > > > mean how do I know which state the OpenGL's > > pipeline > > > was before this attribute was applied to restore > > it. > > > > > > OK, as far as I see from different > > StateAttribute's > > > derivatives (FBO, Viewport, Texture, ...) there is > > > some default function call to set the GL's > > pipeline in > > > a predictable state (i.e. bind FBO or texture with > > id > > > 0, set default viewport, ...). > > > > > > However what if there is no real default state to > > > which to return the GL's pipeline? How to manage > > this? > > > > > > > > > > > > __________________________________________________________ > > > Gesendet von Yahoo! Mail. > > > Der Lieblings-Mailbox der Welt. > > > http://de.overview.mail.yahoo.com > > > _______________________________________________ > > > osg-users mailing list > > > [email protected] > > > > > > http://lists.openscenegraph.org/listinfo.cgi/osg-users-openscenegraph.org > > > > > > _______________________________________________ > > osg-users mailing list > > [email protected] > > > http://lists.openscenegraph.org/listinfo.cgi/osg-users-openscenegraph.org > > > > > > __________________________________________________________ > Gesendet von Yahoo! Mail. > Der Lieblings-Mailbox der Welt. > http://de.overview.mail.yahoo.com > _______________________________________________ > osg-users mailing list > [email protected] > http://lists.openscenegraph.org/listinfo.cgi/osg-users-openscenegraph.org >
_______________________________________________ osg-users mailing list [email protected] http://lists.openscenegraph.org/listinfo.cgi/osg-users-openscenegraph.org

