| 167 | } |
| 168 | |
| 169 | void 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 | |
| 215 | void RenderLabelObject::renderBackground_( const ModelRenderParams& renderParams ) |
| 216 | { |
nothing calls this directly
no test coverage detected