/*========================================================================= Program: Visualization Toolkit Module: vtkOpenGLRenderPass.cxx Copyright (c) Ken Martin, Will Schroeder, Bill Lorensen All rights reserved. See Copyright.txt or http://www.kitware.com/Copyright.htm for details. This software is distributed WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the above copyright notice for more information. =========================================================================*/ #include "vtkOpenGLRenderPass.h" #include "vtkInformation.h" #include "vtkInformationObjectBaseVectorKey.h" #include "vtkObjectFactory.h" #include "vtkProp.h" #include "vtkRenderState.h" #include vtkInformationKeyMacro(vtkOpenGLRenderPass, RenderPasses, ObjectBaseVector); //------------------------------------------------------------------------------ void vtkOpenGLRenderPass::PrintSelf(std::ostream& os, vtkIndent indent) { this->Superclass::PrintSelf(os, indent); } //------------------------------------------------------------------------------ bool vtkOpenGLRenderPass::PreReplaceShaderValues( std::string&, std::string&, std::string&, vtkAbstractMapper*, vtkProp*) { return true; } bool vtkOpenGLRenderPass::PostReplaceShaderValues( std::string&, std::string&, std::string&, vtkAbstractMapper*, vtkProp*) { return true; } //------------------------------------------------------------------------------ bool vtkOpenGLRenderPass::SetShaderParameters( vtkShaderProgram*, vtkAbstractMapper*, vtkProp*, vtkOpenGLVertexArrayObject*) { return true; } //------------------------------------------------------------------------------ vtkMTimeType vtkOpenGLRenderPass::GetShaderStageMTime() { return 0; } //------------------------------------------------------------------------------ vtkOpenGLRenderPass::vtkOpenGLRenderPass() = default; //------------------------------------------------------------------------------ vtkOpenGLRenderPass::~vtkOpenGLRenderPass() = default; //------------------------------------------------------------------------------ void vtkOpenGLRenderPass::PreRender(const vtkRenderState* s) { assert("Render state valid." && s); size_t numProps = s->GetPropArrayCount(); for (size_t i = 0; i < numProps; ++i) { vtkProp* prop = s->GetPropArray()[i]; vtkInformation* info = prop->GetPropertyKeys(); if (!info) { info = vtkInformation::New(); prop->SetPropertyKeys(info); info->FastDelete(); } info->Append(vtkOpenGLRenderPass::RenderPasses(), this); } } //------------------------------------------------------------------------------ void vtkOpenGLRenderPass::PostRender(const vtkRenderState* s) { assert("Render state valid." && s); size_t numProps = s->GetPropArrayCount(); for (size_t i = 0; i < numProps; ++i) { vtkProp* prop = s->GetPropArray()[i]; vtkInformation* info = prop->GetPropertyKeys(); if (info) { info->Remove(vtkOpenGLRenderPass::RenderPasses(), this); if (info->Length(vtkOpenGLRenderPass::RenderPasses()) == 0) { info->Remove(vtkOpenGLRenderPass::RenderPasses()); } } } }