[sldev] force object redraw?
Dave Parks
davep at lindenlab.com
Mon Feb 4 18:49:22 PST 2008
If "registerFace" is called and does nothing, then there is no way for
the object to be drawn. That's where the object faces are added to the
render batches that the graphics engine uses for issuing OpenGL
commands. Here's the whole pipeline:
- markRebuild puts the object into LLPipeline's build queue
- LLPipeline calls updateGeom on objects in the queue, time slicing for
non priority updates
- In the latest windlight build, an object's updateGeom must explicitly
request a spatial group render batch rebuild by calling
LLSpatialGroup::dirtyGeom
- Visible spatial groups are determined in updateCull
- LLSpatialGroup::rebuildGeom is called from LLPipeline::postSort
- in LLVOVolumePartition::rebuildGeom, render batches (instances of
LLDrawInfo) are built and registerFace is called for every face added to
a batch
- Pigs fly
- render batches are sorted by texture/matrix/distance
- LLPipeline::renderGeom runs through the drawpools and render passes
which issue drawing calls.
Anna Gulaev wrote:
> On 2/4/08, *Dave Parks* wrote:
>
> Check out the code for "hide selected." It does what you want. There
> is an implicit call to markRebuild on selection/deselection. I
> believe
>
>
> Setting "Hide Selected" causes three things to happen:
> 1) stateSort exits without doing anything for selected objects
> 2) the object loop in renderForSelect skips selected objects
> 3) registerFace exits without doing anything for selected objects
>
> So I added my should-by-invisible condition to these three places, and
> an explicit call to markRebuild at the time the object is flagged to
> be invisible, and...no joy. It acts axactly as it did when I was using
> invisibility. The object does not go invisible until it is selected.
>
More information about the SLDev
mailing list