ACloudViewer  3.9.4
A Modern Library for 3D Data Processing
MultiTextureRenderer.h
Go to the documentation of this file.
1 // ----------------------------------------------------------------------------
2 // - CloudViewer: www.cloudViewer.org -
3 // ----------------------------------------------------------------------------
4 // Copyright (c) 2018-2024 www.cloudViewer.org
5 // SPDX-License-Identifier: MIT
6 // ----------------------------------------------------------------------------
7 
8 #pragma once
9 
10 #include <ecvMaterial.h>
11 
13 
14 // Forward declarations
15 class vtkTexture;
16 class vtkActor;
17 class vtkTextureUnitManager;
18 class vtkRenderWindow;
19 
20 namespace PclUtils {
21 namespace renders {
22 
33 public:
35  ~MultiTextureRenderer() override = default;
36 
37  bool CanHandle(size_t material_count,
38  bool has_pbr_textures,
39  bool has_multiple_map_kd) const override;
40 
41  RenderingMode GetMode() const override;
42 
43  bool Apply(vtkLODActor* actor,
44  const class ccMaterialSet* materials,
45  vtkPolyData* polydata,
46  vtkRenderer* renderer) override;
47 
48  bool Update(vtkActor* actor,
49  const class ccMaterialSet* materials,
50  vtkPolyData* polydata,
51  vtkRenderer* renderer) override;
52 
53  std::string GetName() const override;
54 
59  bool ApplyMaterial(ccMaterial::CShared material,
60  vtkActor* actor,
61  float intensity_scale = 1.0f) const;
62 
63 private:
67  int LoadTexture(ccMaterial::CShared material, ::vtkTexture* vtk_tex) const;
68 
72  ::vtkTextureUnitManager* GetTextureUnitManager(
73  ::vtkRenderWindow* render_window) const;
74 };
75 
76 } // namespace renders
77 } // namespace PclUtils
RenderingMode GetMode() const override
Get the rendering mode this renderer implements.
bool Update(vtkActor *actor, const class ccMaterialSet *materials, vtkPolyData *polydata, vtkRenderer *renderer) override
Update existing actor with new materials.
bool Apply(vtkLODActor *actor, const class ccMaterialSet *materials, vtkPolyData *polydata, vtkRenderer *renderer) override
Apply rendering to actor.
std::string GetName() const override
Get renderer name for logging.
bool CanHandle(size_t material_count, bool has_pbr_textures, bool has_multiple_map_kd) const override
Check if this renderer can handle the given material.
bool ApplyMaterial(ccMaterial::CShared material, vtkActor *actor, float intensity_scale=1.0f) const
Apply material properties to actor.
Base class for all texture renderers.
Mesh (triangle) material.
QSharedPointer< const ccMaterial > CShared
Const + Shared type.
Definition: ecvMaterial.h:31
RenderingMode
Rendering mode enumeration.