[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