MeshLib C++ Docs
Loading...
Searching...
No Matches
MRRenderLabelObject.h
Go to the documentation of this file.
1#pragma once
3#include "MRMesh/MRVector2.h"
4#include "MRRenderGLHelpers.h"
5#include "MRRenderHelpers.h"
6#include "MRMesh/MRBox.h"
7
8namespace MR
9{
12
13class RenderLabelObject : public virtual IRenderObject
14{
15public:
18
19 virtual bool render( const ModelRenderParams& params ) override;
20 virtual void renderPicker( const ModelBaseRenderParams& params, unsigned geomId ) override;
21
22 virtual size_t heapBytes() const override;
23 virtual size_t glBytes() const override;
24
25 virtual void forceBindAll() override;
26
27private:
28 const ObjectLabel* objLabel_;
29
30 int faceIndicesSize_{ 0 };
31
32 RenderBufferRef<Vector3i> loadFaceIndicesBuffer_();
33
34 typedef unsigned int GLuint;
35
36 GLuint labelArrayObjId_{ 0 };
37 GlBuffer vertPosBuffer_;
38 GlBuffer facesIndicesBuffer_;
39
40 GLuint srcArrayObjId_{ 0 };
41 GlBuffer srcVertPosBuffer_;
42 GlBuffer srcIndicesBuffer_;
43 GlTexture2 srcIndicesSelectionTex_;
44
45 GLuint bgArrayObjId_{ 0 };
46 GlBuffer bgVertPosBuffer_;
47 GlBuffer bgFacesIndicesBuffer_;
48
49 GLuint llineArrayObjId_{ 0 };
50 GlBuffer llineVertPosBuffer_;
51 GlBuffer llineEdgesIndicesBuffer_;
52
53 void renderSourcePoint_( const ModelRenderParams& renderParams );
54 void renderBackground_( const ModelRenderParams& renderParams );
55 void renderLeaderLine_( const ModelRenderParams& renderParams );
56
57 void bindLabel_();
58
60 void initBuffers_();
61
63 void freeBuffers_();
64
65 void update_();
66
68 uint32_t dirty_;
69 bool dirtySrc_;
70 bool dirtyBg_;
71 bool dirtyLLine_;
72 Vector3f positionState_;
73 Vector2f pivotPointState_;
74 float backgroundPaddingState_;
75 Box3f meshBox_;
76};
77
78}
Definition MRIRenderObject.h:134
Definition MRObjectLabel.h:29
provides access to shared buffer with type casting
Definition MRRenderHelpers.h:19
Definition MRRenderLabelObject.h:14
Visual Object.
Definition MRVisualObject.h:116
virtual void forceBindAll() override
binds all data for this render object, not to bind ever again (until object becomes dirty)
virtual size_t glBytes() const override
returns the amount of memory this object allocated in OpenGL
RenderLabelObject(const VisualObject &visObj)
virtual size_t heapBytes() const override
returns the amount of memory this object occupies on heap
virtual void renderPicker(const ModelBaseRenderParams &params, unsigned geomId) override
virtual bool render(const ModelRenderParams &params) override
Returns true if something was rendered, or false if nothing to render.
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