Hi Vincent,

I'll try to answer to your questions...

On Fri, Jan 9, 2009 at 9:55 AM, Vincent Bourdier <vincent.bourd...@gmail.com
> wrote:

> Hi,
>
> I need some explanations about the ways OSG allow to modify the render.
>
> I am working on a function, to apply to a node, to set it always rendered
> over the other nodes. In other words, If I apply this on an osgText, I would
> be able to read the text whatever my camera position can be (of course if
> text is in the frustum).
>
> I make some search and I found a lot of things:
>
>  * node->setCullingActive() : disable/enable the culling on a node. I am I
> good, disabling this on a node is not sufficient, after that we need to tell
> the node when to be rendered, isn't it ?
>

You don't necessarily need to disable the culling to be sure to see your
node. The culling is applied depending on the view frustum or the distance
(small feature culling). And you're right, it's not sufficient to disable
it.


>
>  * state->setMode(GL_DEPTH_TEST, OFF) : same thing ? what is the difference
> with the first one ? just OSG/OpenGl distinction ?
>

This one disable depth tests with the other nodes, which means that when
you'll render your node, OpenGL will not check if your object is behind
another one, it will render your node on top of everything rendered so far.

It's a first step to be sure to see your node, so don't forget to set the
GL_DEPTH_TEST to off.


>
>  * state->setRenderbinDetails(binNum, binName) : num < 0 will be first
> rendered, num >0 will be the last ? what is the binName ? I saw
> "LastRenderBin" or "RenderBin" ... is there some keyword or it is just a
> name ? what is this word function ?
>

RenderBins allows you to control the rendering order of your node, I must
admit that it's a complex topic I don't still fully understand. But what you
need to know is that if you set something like that :

state->setRenderbinDetails(INT_MAX, "RenderBin") ;

You'll be pretty sure to have your object rendered last. In combination with
the GL_DEPTH_TEST, you've got your reciepe to get an object always rendered.

But be aware to not have an other osg::Camera rendering after the one where
your object is attached. In this case, be sure that you render your object
with the last osg::Camera rendered in your scene.

Hope this helps !

-- 
Serge Lages
http://www.tharsis-software.com
_______________________________________________
osg-users mailing list
osg-users@lists.openscenegraph.org
http://lists.openscenegraph.org/listinfo.cgi/osg-users-openscenegraph.org

Reply via email to