| 203 | } |
| 204 | |
| 205 | bool vtkArrayRenderer::IsUpToDate(vtkRenderer* renderer, vtkActor* actor) |
| 206 | { |
| 207 | if (this->RenderTimeStamp < actor->GetProperty()->GetMTime()) |
| 208 | { |
| 209 | return false; |
| 210 | } |
| 211 | if (this->RenderTimeStamp < this->GetMTime()) |
| 212 | { |
| 213 | return false; |
| 214 | } |
| 215 | |
| 216 | auto modsIter = vtk::TakeSmartPointer(this->GetGLSLModCollection()->NewIterator()); |
| 217 | auto oglRen = static_cast<vtkOpenGLRenderer*>(renderer); |
| 218 | for (modsIter->InitTraversal(); !modsIter->IsDoneWithTraversal(); modsIter->GoToNextItem()) |
| 219 | { |
| 220 | auto mod = static_cast<vtkGLSLModifierBase*>(modsIter->GetCurrentObject()); |
| 221 | if (!mod->IsUpToDate(oglRen, this, actor)) |
| 222 | { |
| 223 | vtkDebugWithObjectMacro(nullptr, << mod->GetClassName() << " is outdated"); |
| 224 | // if any mod is outdated, entire shader program must be re-compiled. |
| 225 | return false; |
| 226 | } |
| 227 | } |
| 228 | return true; |
| 229 | } |
| 230 | |
| 231 | void vtkArrayRenderer::PrepareToRender(vtkRenderer* renderer, vtkActor* actor) |
| 232 | { |
no test coverage detected