MeshLib C++ Docs
Loading...
Searching...
No Matches
MRRenderVolumeObject.h
Go to the documentation of this file.
1#pragma once
2#include "MRViewerFwd.h"
3#ifndef MRVIEWER_NO_VOXELS
4#include "MRVoxels/MRVoxelsFwd.h"
5
8#include "MRMesh/MRBuffer.h"
9#include "MRRenderGLHelpers.h"
10#include "MRRenderHelpers.h"
11
12namespace MR
13{
16
17class MRVIEWER_CLASS RenderVolumeObject : public virtual IRenderObject
18{
19public:
22
23 virtual bool render( const ModelRenderParams& params ) override;
24 virtual void renderPicker( const ModelBaseRenderParams& params, unsigned geomId ) override;
25 virtual size_t heapBytes() const override;
26 virtual size_t glBytes() const override;
27 virtual void forceBindAll() override;
28
29private:
30 const ObjectVoxels* objVoxels_{ nullptr };
31
32 typedef unsigned int GLuint;
33 GLuint volumeArrayObjId_{ 0 };
34 GlBuffer volumeVertsBuffer_;
35 GlBuffer volumeIndicesBuffer_;
36
37 GlTexture3 volume_;
38 GlTexture2 denseMap_;
39
40 Vector2i activeVoxelsTextureSize_;
41 GlTexture2 activeVoxelsTex_;
42 int maxTexSize_{ 0 };
43
45 void render_( const ModelBaseRenderParams& params, const ModelRenderParams* nonPickerParams, unsigned geomId );
46 void bindVolume_( bool picker );
47
49 void initBuffers_();
50
52 void freeBuffers_();
53
54 void update_();
55
56 RenderBufferRef<unsigned> loadActiveVoxelsTextureBuffer_();
57
59 uint32_t dirty_{ 0 };
60};
61
62}
63#endif
Definition MRIRenderObject.h:134
Definition MRObjectVoxels.h:20
Definition MRRenderVolumeObject.h:18
Visual Object.
Definition MRVisualObject.h:116
virtual size_t heapBytes() const override
returns the amount of memory this object occupies on heap
RenderVolumeObject(const VisualObject &visObj)
virtual void forceBindAll() override
binds all data for this render object, not to bind ever again (until object becomes dirty)
virtual bool render(const ModelRenderParams &params) override
Returns true if something was rendered, or false if nothing to render.
virtual size_t glBytes() const override
returns the amount of memory this object allocated in OpenGL
virtual void renderPicker(const ModelBaseRenderParams &params, unsigned geomId) override
only for bindings generation
Definition MRCameraOrientationPlugin.h:8
Definition MRIRenderObject.h:46
Mesh rendering parameters for primary rendering (as opposed to the picker).
Definition MRIRenderObject.h:54