VolViz
A volume visualization tool
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups
Mesh.h
Go to the documentation of this file.
1 #pragma once
2 
3 #include "GL/Buffer.h"
4 #include "GL/VertexArray.h"
5 #include "Geometry.h"
6 #include "Types.h"
7 
8 #include <concurrentqueue.h>
9 
10 namespace VolViz {
11 namespace Private_ {
12 
13 class Mesh : public Geometry {
14 public:
15  Mesh(MeshDescriptor const &descriptor, VisualizerImpl &visualizer);
16 
17 protected:
18  virtual void doInit() override;
19 
20  virtual void doRender(std::uint32_t index, bool selected) override;
21 
22  virtual void doUpdate() override;
23 
24  virtual void doEnqueueUpdate(GeometryDescriptor const &descriptor) override;
25  virtual void doEnqueueUpdate(GeometryDescriptor &&descriptor) override;
26 
27 private:
28  using UpdateQueue = moodycamel::ConcurrentQueue<MeshDescriptor>;
29  void uploadMesh();
30 
32 
36  std::size_t numTriangles_{0};
37 };
38 
39 } // namespace Private_
40 } // namespace VolViz
41 
virtual void doUpdate() override
Definition: Mesh.cpp:61
UpdateQueue updateQueue_
Definition: Mesh.h:31
moodycamel::ConcurrentQueue< MeshDescriptor > UpdateQueue
Definition: Mesh.h:28
Definition: Mesh.h:13
RAII wrapper for OpenGL buffers.
Definition: Buffer.h:14
virtual void doRender(std::uint32_t index, bool selected) override
Definition: Mesh.cpp:21
Definition: Geometry.h:10
Definition: GeometryDescriptor.h:33
GL::Buffer indexBuffer_
Definition: Mesh.h:34
RAII wrapper for OpenGL vertex arrays.
Definition: VertexArray.h:11
virtual void doInit() override
Definition: Mesh.cpp:19
GLuint index
Definition: glad.h:2430
Mesh(MeshDescriptor const &descriptor, VisualizerImpl &visualizer)
Definition: Mesh.cpp:13
void uploadMesh()
Definition: Mesh.cpp:63
Definition: VisualizerImpl.h:29
GL::VertexArray vertexArrayObject_
Definition: Mesh.h:35
virtual void doEnqueueUpdate(GeometryDescriptor const &descriptor) override
Definition: Mesh.cpp:149
GL::Buffer vertexBuffer_
Definition: Mesh.h:33
A geometry descriptor describing an arbitrary triangle mesh.
Definition: GeometryDescriptor.h:68
std::size_t numTriangles_
Definition: Mesh.h:36