There RenderBin name exist in StateSet so you can define your own bins
with their own bin names. There are just two default ones "RenderBin"
and "DepthSortedBin". See include/osgUtil/RenderBIn for further
details.
On 10/4/07, Paul Melis <[EMAIL PROTECTED]> wrote:
> Robert Osfield wrote:
>
> >StateSet::setRenderingHint is merly a convenience function for setting
> >the bin number and bin name it has no function beyond this.
> >
> >
> Just chiming in here: it seems the sort-order of a renderbin is
> determined by its name. This has always bothered me a bit, as it gives
> the impression that you can assign any name, while there are only 2
> valid ones. Would it be an option to change this to a simple "sort_mode"
> variable whose value comes from an enum { SortByState, SortByDepth, ...} ?
>
> Paul
>
> >On 10/4/07, Christophe Medard <[EMAIL PROTECTED]> wrote:
> >
> >
> >>To react to what says Robert, I'm under the impression that renderingHint in
> >>fact isn't used internally, is it ?
> >>Why is there two informations in fact redundant (an order of draw),
> >>renderingHint and binNumber ?
> >>
> >>So if I'm correct, things must only be thought of in 'binNumber' terms.
> >>To react to what says Tim, I'm passing through stateset on group nodes
> >>indeed, but I'm not sure to perfecly understand well what you're saying.
> >>Let's take a over simple example, if I have the following three, what will
> >>be the order of draw ?
> >>
> >>
> >> |
> >>
> >> --------------------------------------------
> >> |
> >>|
> >> osg::Group "A"
> >>osg::Group "B"
> >> [binNumber = 8]
> >>dft, so binNumber = 0
> >> |
> >> ------------------------------------------------
> >> | |
> >>|
> >> osg::Geode "C" osg::Geode "D" osg::Geode "E"
> >> [binNumber = 5] [binNumber = 1] |
> >>
> >> |
> >>
> >> -----------------------
> >> |
> >>|
> >> osg::Drawable
> >>E0 osg::Drawable E1
> >> dft, so binNumber =
> >>0 [binNumber = 6]
> >>
> >>Is it B/E0 - D - C - A - E1 ?
> >>
> >>
> >>Another example, closer to my current purpose test, practical to make multi
> >>pass drawings :
> >>
> >> |
> >> osg::Group
> >> |
> >> ------------------------------------------
> >> | |
> >>|
> >> | osg::Group "B" osg::Group "C"
> >> | [binNumber = 20] [binNumber = 30]
> >> |
> >> osg::Geode "A"
> >> [binNumber = 15]
> >>
> >>
> >>Is it A - B - C ?
> >>
> >>
> >>I think exploring a concrete example like that clear things. Thanks
> >>
> >>
> >>
> >>----- Original Message -----
> >>From: "Tim Moore" <[EMAIL PROTECTED]>
> >>To: "OpenSceneGraph Users" <[email protected]>
> >>Sent: Thursday, October 04, 2007 2:00 PM
> >>Subject: Re: [osg-users] RenderingHint vs binNumber(RenderBinDetails)
> >>
> >>
> >>
> >>>Robert didn't answer your second question; I'll have a go because I think
> >>>I understand
> >>>it.
> >>>
> >>>First of all, there aren't a fixed number of render bins. You can assign a
> >>>StateSet
> >>>to any integer, positive or negative. This turns out to be quite useful.
> >>>
> >>>When you say "set a rendering order on a group node," you mean that you've
> >>>set the
> >>>render bin in a state set in that node. There is an inheritance effect,
> >>>but it may
> >>>not be what you expect. Render bins can contain other render bins! If the
> >>>children of
> >>>your group node have state sets that also set the render bin detail, their
> >>>render bins
> >>>are stored inside the group state set's render bin, and they will be
> >>>rendered in order
> >>>when that render bin is traversed.
> >>>
> >>>This can give you unexpected results, when for example you assign a state
> >>>sets with
> >>>TRANSPARENT_BIN or OPAQUE_BIN to nodes up and down the scene graph :) On
> >>>the other
> >>>hand you can get very precise control of the ordering of drawables with
> >>>it. In
> >>>FlightGear I just used this feature to order cloud layers. The layers are
> >>>too big for
> >>>normal transparency sorting to work well, and you want to draw the cloud
> >>>layer tops
> >>>from low altitude to high and the bottoms from high to low. I used the
> >>>altitudes
> >>>of the layers as render bin numbers to get the right order:
> >>>
> >>> // Force the cloud layers into recursive bins of bin 4.
> >>> osg::StateSet *rootSet = layer_root->getOrCreateStateSet();
> >>> rootSet->setRenderBinDetails(4, "RenderBin");
> >>>
> >>>Child 0 has the bottom layers and child 1 has the tops:
> >>>
> >>>
> >>>layer_root->getChild(0)->getStateSet()->setRenderBinDetails(-(int)layer_asl,
> >>>
> >>>"RenderBin");
> >>>
> >>>layer_root->getChild(1)->getStateSet()->setRenderBinDetails((int)layer_asl,
> >>>
> >>>"RenderBin");
> >>>
> >>>I hope someone will correct me if I've gotten this all wrong!
> >>>Tim
> >>>
> >>>
> >>>
> >>_______________________________________________
> >>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
> >
> >
>
> _______________________________________________
> 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