MCPcopy Create free account
hub / github.com/MeshInspector/MeshLib / renderSourcePoint_

Method renderSourcePoint_

source/MRViewer/MRRenderLabelObject.cpp:169–213  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

167}
168
169void RenderLabelObject::renderSourcePoint_( const ModelRenderParams& renderParams )
170{
171 GL_EXEC( glBindVertexArray( srcArrayObjId_ ) );
172
173 auto shader = GLStaticHolder::getShaderId( GLStaticHolder::Points );
174 GL_EXEC( glUseProgram( shader ) );
175
176 const std::array<Vector3f, 1> point { objLabel_->getLabel().position };
177 bindVertexAttribArray( shader, "position", srcVertPosBuffer_, point, 3, dirtySrc_ );
178
179 constexpr std::array<VertId, 1> pointIndices{ VertId( 0 ) };
180 srcIndicesBuffer_.loadDataOpt( GL_ELEMENT_ARRAY_BUFFER, dirtySrc_, pointIndices );
181
182 GL_EXEC( glUniformMatrix4fv( glGetUniformLocation( shader, "model" ), 1, GL_TRUE, renderParams.modelMatrix.data() ) );
183 GL_EXEC( glUniformMatrix4fv( glGetUniformLocation( shader, "view" ), 1, GL_TRUE, renderParams.viewMatrix.data() ) );
184 GL_EXEC( glUniformMatrix4fv( glGetUniformLocation( shader, "proj" ), 1, GL_TRUE, renderParams.projMatrix.data() ) );
185
186 const auto& mainColor = Vector4f( objLabel_->getSourcePointColor( renderParams.viewportId ) );
187 GL_EXEC( glUniform4f( glGetUniformLocation( shader, "mainColor" ), mainColor[0], mainColor[1], mainColor[2], mainColor[3] ) );
188 GL_EXEC( glUniform4f( glGetUniformLocation( shader, "backColor" ), mainColor[0], mainColor[1], mainColor[2], mainColor[3] ) );
189 GL_EXEC( glUniform1f( glGetUniformLocation( shader, "globalAlpha" ), objLabel_->getGlobalAlpha( renderParams.viewportId ) / 255.0f ) );
190
191 GL_EXEC( glUniform1ui( glGetUniformLocation( shader, "primBucketSize" ), 1 ) );
192
193 // Selection
194 GL_EXEC( glActiveTexture( GL_TEXTURE0 ) );
195 unsigned selTexture = 0;
196 srcIndicesSelectionTex_.loadDataOpt( dirtySrc_,
197 { .resolution = {1, 1, 1}, .internalFormat = GL_R32UI, .format = GL_RED_INTEGER, .type= GL_UNSIGNED_INT },
198 (const char*)&selTexture );
199 GL_EXEC( glUniform1i( glGetUniformLocation( shader, "selection" ), 0 ) );
200
201 getViewerInstance().incrementThisFrameGLPrimitivesCount( Viewer::GLPrimitivesType::PointElementsNum, pointIndices.size() );
202
203#ifdef __EMSCRIPTEN__
204 GL_EXEC( glUniform1f( glGetUniformLocation( shader, "pointSize" ), objLabel_->getSourcePointSize() ) );
205#else
206 GL_EXEC( glPointSize( objLabel_->getSourcePointSize() ) );
207#endif
208 GL_EXEC( glDepthFunc( getDepthFunctionLEqual( renderParams.depthFunction ) ) );
209 GL_EXEC( glDrawElements( GL_POINTS, ( GLsizei )pointIndices.size(), GL_UNSIGNED_INT, 0 ) );
210 GL_EXEC( glDepthFunc( getDepthFunctionLEqual( DepthFunction::Default ) ) );
211
212 dirtySrc_ = false;
213}
214
215void RenderLabelObject::renderBackground_( const ModelRenderParams& renderParams )
216{

Callers

nothing calls this directly

Calls 6

getDepthFunctionLEqualFunction · 0.85
bindVertexAttribArrayFunction · 0.70
loadDataOptMethod · 0.45
dataMethod · 0.45
sizeMethod · 0.45

Tested by

no test coverage detected