VTK  9.0.1
Model.h
Go to the documentation of this file.
1 #pragma once
2 
3 #include "../Types.h"
4 #include "Geometry.h"
5 
6 #include <VisRTX.h>
7 
8 #include <set>
9 
10 namespace RTW
11 {
12  class Model : public Object
13  {
14  friend class Renderer;
15 
16  public:
18  {
19  VisRTX::Context* rtx = VisRTX_GetContext();
20  this->model = rtx->CreateModel();
21  }
22 
24  {
25  for (Geometry* geometry : this->geometries)
26  if (geometry)
27  geometry->Release();
28 
29  this->model->Release();
30  }
31 
32  void Commit() override
33  {
34  }
35 
36  void AddGeometry(Geometry* geometry)
37  {
38  if (!geometry)
39  return;
40 
41  // Check if already added
42  auto it = this->geometries.find(geometry);
43  if (it != this->geometries.end())
44  return;
45 
46 
47  // Add and increase ref count
48  this->model->AddGeometry(geometry->geometry);
49  this->geometries.insert(geometry);
50  geometry->AddRef();
51  }
52 
53  private:
54  VisRTX::Model* model = nullptr;
55  std::set<Geometry*> geometries;
56  };
57 }
void Commit() override
Definition: Model.h:32
~Model()
Definition: Model.h:23
void AddGeometry(Geometry *geometry)
Definition: Model.h:36
Model()
Definition: Model.h:17
void AddRef()
Definition: Object.h:36
Definition: Backend.h:6