MeshLib C++ Docs
Loading...
Searching...
No Matches
MRRenderMeshObject.h
Go to the documentation of this file.
1#pragma once
2#include "exports.h"
5#include "MRMesh/MRBuffer.h"
6#include "MRGLStaticHolder.h"
7#include "MRRenderGLHelpers.h"
8#include "MRRenderHelpers.h"
9
10namespace MR
11{
14
15class MRVIEWER_CLASS RenderMeshObject : public virtual IRenderObject
16{
17public:
18 MRVIEWER_API RenderMeshObject( const VisualObject& visObj );
19 MRVIEWER_API virtual ~RenderMeshObject();
20
21 MRVIEWER_API virtual bool render( const ModelRenderParams& params ) override;
22 MRVIEWER_API virtual void renderPicker( const ModelBaseRenderParams& params, unsigned geomId ) override;
23 MRVIEWER_API virtual size_t heapBytes() const override;
24 MRVIEWER_API virtual size_t glBytes() const override;
25 MRVIEWER_API virtual void forceBindAll() override;
26protected:
28
29 int vertPosSize_{ 0 };
32 int vertUVSize_{ 0 };
34 int edgeSize_{ 0 };
35 int selEdgeSize_{ 0 };
36 int bordersSize_{ 0 };
37 int pointSize_{ 0 };
42
52
53 typedef unsigned int GLuint;
54
58
61
64
69
71
76
78
85
86 int maxTexSize_{ 0 };
87
90 bool dirtyPointPos_ = false;
91
92 MRVIEWER_API virtual void renderEdges_( const ModelRenderParams& parameters, RenderModelPassMask desiredPass, GLuint vao, const Color& color, uint32_t dirtyFlag );
93
94 MRVIEWER_API virtual void renderMeshEdges_( const ModelRenderParams& parameters, RenderModelPassMask desiredPass );
95 MRVIEWER_API virtual void renderMeshVerts_( const ModelRenderParams& parameters, RenderModelPassMask desiredPass );
96
97 MRVIEWER_API virtual void bindMesh_( GLStaticHolder::ShaderType shaderType );
98
99 MRVIEWER_API virtual void bindMeshPicker_();
100
101 MRVIEWER_API virtual void bindEdges_();
102 MRVIEWER_API virtual void bindBorders_();
103 MRVIEWER_API virtual void bindSelectedEdges_();
104 MRVIEWER_API virtual void bindEmptyTextures_( GLuint shaderId );
105 MRVIEWER_API virtual void bindPoints_( GLStaticHolder::ShaderType shaderType );
106
107 MRVIEWER_API virtual void drawMesh_( bool solid, ViewportId viewportId, bool picker = false ) const;
108
110 MRVIEWER_API virtual void initBuffers_();
111
113 MRVIEWER_API virtual void freeBuffers_();
114
115 MRVIEWER_API virtual void update_( ViewportMask mask );
116
118 uint32_t dirty_{ 0 };
120 bool dirtyEdges_{ false };
121
122#ifdef __EMSCRIPTEN__
123 bool cornerMode_ = true;
124#else
125 bool cornerMode_ = false;
126#endif
127};
128
129}
represents OpenGL buffer owner, and allows uploading data in it remembering buffer size
Definition MRRenderGLHelpers.h:19
represents OpenGL array texture 2D owner, and allows uploading data in it remembering texture size
Definition MRRenderGLHelpers.h:91
represents OpenGL 2D texture owner, and allows uploading data in it remembering texture size
Definition MRRenderGLHelpers.h:68
Definition MRIRenderObject.h:134
Definition MRObjectMeshHolder.h:35
provides access to shared buffer with type casting
Definition MRRenderHelpers.h:19
Definition MRViewportId.h:16
stores mask of viewport unique identifiers
Definition MRViewportId.h:42
Visual Object.
Definition MRVisualObject.h:115
ShaderType
Definition MRGLStaticHolder.h:19
virtual void update_(ViewportMask mask)
GlBuffer facesIndicesBuffer_
Definition MRRenderMeshObject.h:70
GlBuffer vertUVBuffer_
Definition MRRenderMeshObject.h:66
GlTexture2 selEdgesTexture_
Definition MRRenderMeshObject.h:80
GLuint edgesArrayObjId_
Definition MRRenderMeshObject.h:55
GlTexture2 emptyScnLengthColorTexture_
Definition MRRenderMeshObject.h:84
RenderBufferRef< UVCoord > loadVertUVBuffer_()
GlTexture2 emptyVertsColorTexture_
Definition MRRenderMeshObject.h:82
GLuint borderArrayObjId_
Definition MRRenderMeshObject.h:56
virtual void bindMesh_(GLStaticHolder::ShaderType shaderType)
bool dirtyPointPos_
Definition MRRenderMeshObject.h:90
virtual void drawMesh_(bool solid, ViewportId viewportId, bool picker=false) const
unsigned int GLuint
Definition MRRenderMeshObject.h:53
RenderBufferRef< unsigned > loadFaceSelectionTextureBuffer_()
virtual void bindEmptyTextures_(GLuint shaderId)
GlTexture2 emptyLinesColorTexture_
Definition MRRenderMeshObject.h:83
int vertUVSize_
Definition MRRenderMeshObject.h:32
const ObjectMeshHolder * objMesh_
Definition MRRenderMeshObject.h:27
GLuint meshArrayObjId_
Definition MRRenderMeshObject.h:62
GlBuffer borderBuffer_
Definition MRRenderMeshObject.h:57
RenderBufferRef< Vector4f > loadFaceNormalsTextureBuffer_()
virtual void renderMeshEdges_(const ModelRenderParams &parameters, RenderModelPassMask desiredPass)
GlTexture2 facesNormalsTex_
Definition MRRenderMeshObject.h:74
bool dirtyEdges_
...
Definition MRRenderMeshObject.h:120
GlTexture2 faceSelectionTex_
Definition MRRenderMeshObject.h:72
RenderBufferRef< Vector3f > loadVertNormalsBuffer_()
RenderMeshObject(const VisualObject &visObj)
Vector2i texturePerFaceSize_
Definition MRRenderMeshObject.h:41
RenderModelPassMask
Various passes of the 3D rendering.
Definition MRRenderModelParameters.h:40
GlBuffer vertNormalsBuffer_
Definition MRRenderMeshObject.h:67
GlBuffer selectedEdgesBuffer_
Definition MRRenderMeshObject.h:60
GlBuffer vertColorsBuffer_
Definition MRRenderMeshObject.h:68
int faceIndicesSize_
Definition MRRenderMeshObject.h:33
GlTexture2 texturePerFace_
Definition MRRenderMeshObject.h:75
bool cornerMode_
Definition MRRenderMeshObject.h:125
virtual void bindSelectedEdges_()
int vertColorsSize_
Definition MRRenderMeshObject.h:31
int edgeSize_
Definition MRRenderMeshObject.h:34
GlTexture2DArray textureArray_
Definition MRRenderMeshObject.h:77
int pointValidSize_
Definition MRRenderMeshObject.h:38
int vertNormalsSize_
Definition MRRenderMeshObject.h:30
GlBuffer vertPosBuffer_
Definition MRRenderMeshObject.h:65
uint32_t dirty_
Marks dirty buffers that need to be uploaded to OpenGL.
Definition MRRenderMeshObject.h:118
RenderBufferRef< Vector3f > loadVertPosBuffer_()
virtual void bindPoints_(GLStaticHolder::ShaderType shaderType)
virtual void bindMeshPicker_()
virtual size_t heapBytes() const override
returns the amount of memory this object occupies on heap
virtual void freeBuffers_()
Release the OpenGL buffer objects.
int maxTexSize_
Definition MRRenderMeshObject.h:86
virtual bool render(const ModelRenderParams &params) override
Returns true if something was rendered, or false if nothing to render.
GLuint selectedEdgesArrayObjId_
Definition MRRenderMeshObject.h:59
virtual void forceBindAll() override
binds all data for this render object, not to bind ever again (until object becomes dirty)
int selEdgeSize_
Definition MRRenderMeshObject.h:35
RenderBufferRef< uint8_t > loadTexturePerFaceTextureBuffer_()
int bordersSize_
Definition MRRenderMeshObject.h:36
GlBuffer pointValidBuffer_
Definition MRRenderMeshObject.h:89
virtual void bindBorders_()
virtual void renderPicker(const ModelBaseRenderParams &params, unsigned geomId) override
GlTexture2 borderTexture_
Definition MRRenderMeshObject.h:81
RenderBufferRef< Vector3i > loadFaceIndicesBuffer_()
RenderBufferRef< VertId > loadPointValidIndicesBuffer_()
int vertPosSize_
Definition MRRenderMeshObject.h:29
int pointSize_
Definition MRRenderMeshObject.h:37
GlTexture2 edgesTexture_
Definition MRRenderMeshObject.h:79
GLuint pointsArrayObjId_
Definition MRRenderMeshObject.h:88
virtual ~RenderMeshObject()
virtual void initBuffers_()
Create a new set of OpenGL buffer objects.
virtual void bindEdges_()
GLuint meshPickerArrayObjId_
Definition MRRenderMeshObject.h:63
Vector2i faceSelectionTextureSize_
Definition MRRenderMeshObject.h:39
Vector2i faceNormalsTextureSize_
Definition MRRenderMeshObject.h:40
virtual void renderMeshVerts_(const ModelRenderParams &parameters, RenderModelPassMask desiredPass)
virtual size_t glBytes() const override
returns the amount of memory this object allocated in OpenGL
GlTexture2 faceColorsTex_
Definition MRRenderMeshObject.h:73
virtual void renderEdges_(const ModelRenderParams &parameters, RenderModelPassMask desiredPass, GLuint vao, const Color &color, uint32_t dirtyFlag)
RenderBufferRef< Color > loadVertColorsBuffer_()
only for bindings generation
Definition MRCameraOrientationPlugin.h:8
Definition MRColor.h:12
Definition MRIRenderObject.h:46
Mesh rendering parameters for primary rendering (as opposed to the picker).
Definition MRIRenderObject.h:54