[osg-users] Draw two translucent geometries in specific order
Robert Osfield
robert.osfield at gmail.com
Fri May 18 07:21:09 PDT 2018
Hi Kristofer,
On 18 May 2018 at 14:42, Kristofer Krus <kristofer.krus at liu.se> wrote:
> I have two geometries, A and B, that are both translucent, of which A should always be rendered before B because it is farther from the camera fragment-wise. However, OpenSceneGraph sometimes renders A first and sometimes renders B first, depending on the viewing angle, which, when B is rendered first, causes A to disappear at the fragments where A and B overlap.
>
> How can I make sure A is always rendered first and then B?
There a several ways to achieve it. The most common way is assign the
two geometries to two different RenderBins
subgraphA->getOrCrreateStateSet()->setRenderinBinDetails("RenderBin",
5); // or "DepthSortedBin" if you have mulitple transparent objects
that need sorting
subgraphB->getOrCrreateStateSet()->setRenderinBinDetails("RenderBin", 6);
Or put them both into a traversal order bin:
Group* group = new osg::Group;
group->getOrCreateStateSet()->setRenderinBinDetails("TraversalOrderBin", 5);
group->addChild(subgraphA);
group->addChild(subgraphB);
Performance wise the later might be a little faster, but won't be a
huge difference.
Cheers,
Robert.
More information about the osg-users
mailing list