<div dir="ltr">You could maybe have an actor per LOD and then swap actors in and out.<div><br></div><div>Actor owns the property, backface property, and texture. Changes to those objects can cause VBO/IBO rebuilds (switching from surface to wireframe, adding a texture map, flat versus phong shading, edge visibility, line width, etc.) The old backend only looked at the actor's property which is sort of broken. </div><div><br></div><div>For example in the old backend: create two properties, one set to wireframe, one set to surface. Then create an actor and mapper set to use display lists. Switching between the two properties will cause an actor mtime change, but the properties themselves would still have low mtimes I believe. In that case the old backend will end up stuck in one representation because it only looks at the property mtime not actor.</div><div><br></div><div><div>To make the VBO/IBO rebuild safely (but less often than currently) I think the solution is to check the mtimes as is done currently, if those are modified then collect up the parameters that require a VBO or IBO rebuild and compare them to a stored value from the last build. If different force a rebuild. That is the best solution IMO just takes some time. I sort of wanted to do that anyhow but now I can say you forced me into it :-)</div><div><br></div><div>Thanks</div><div>Ken</div><div><br></div></div><div><br></div><div><br></div></div><div class="gmail_extra"><br><div class="gmail_quote">On Fri, Nov 20, 2015 at 1:57 PM, Utkarsh Ayachit <span dir="ltr"><<a href="mailto:utkarsh.ayachit@kitware.com" target="_blank">utkarsh.ayachit@kitware.com</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">> I did notice PV is forcing the actor to be modified every time the LOD<br>
> changes (which is a lot). Modifying the actor causes the VBO/IBOs to rebuild<br>
> so it would be better not to do that unless you really need to and in this<br>
> case I'm not sure why it is being done. Specifically I think it is in<br>
> vtkPVLODActor::Modified where it calls this->Device->Modified() . The LOD<br>
> actor is being modified as a result of calling SetEnableLOD constantly<br>
> flipping between true and false. That is not the cause of this issue but it<br>
> is something I noticed that will be a pain for large datasets.<br>
<br>
Ken, currently, there's no way around it. vtkPVLODActor works by<br>
changing the mapper on the internal vtkActor aka Device when LOD mode<br>
is toggled. That will indeed change the Device's MTime even if we stop<br>
calling this->Device->Modiied() in the vtkPVLODActor::Modified(). The<br>
question is why are VBO/IBOs rebuild if actor MTime changes? VBOs<br>
would be data dependent right? Most of data-dependent properties are<br>
on  the Mapper, not the actor. Shouldn't the code that re-creates<br>
VBO/IBOs only depend on Mapper's MTime?<br>
<span class="HOEnZb"><font color="#888888"><br>
Utkarsh<br>
</font></span></blockquote></div><br><br clear="all"><div><br></div>-- <br><div class="gmail_signature">Ken Martin PhD<div>Chairman & CFO<br>Kitware Inc.<br>28 Corporate Drive<br>Clifton Park NY 12065<br>518 371 3971<div><br></div><div><span style="font-size:10pt;font-family:Tahoma,sans-serif">This communication,
including all attachments, contains confidential and legally privileged
information, and it is intended only for the use of the addressee.  Access to this email by anyone else is
unauthorized. If you are not the intended recipient, any disclosure, copying,
distribution or any action taken in reliance on it is prohibited and may be
unlawful. If you received this communication in error please notify us
immediately and destroy the original message. 
Thank you.</span></div></div></div>
</div>