mirror of
				https://github.com/qgis/QGIS.git
				synced 2025-11-04 00:04:25 -05:00 
			
		
		
		
	Don't try to render line primitives if the renderer won't do anything with them
This commit is contained in:
		
							parent
							
								
									fd9f39e0af
								
							
						
					
					
						commit
						e4770a18eb
					
				@ -3807,7 +3807,9 @@ TiledSceneRequestFlags = Qgis  # dirty hack since SIP seems to introduce the fla
 | 
			
		||||
# monkey patching scoped based enum
 | 
			
		||||
Qgis.TiledSceneRendererFlag.RequiresTextures.__doc__ = "Renderer requires textures"
 | 
			
		||||
Qgis.TiledSceneRendererFlag.ForceRasterRender.__doc__ = "Layer should always be rendered as a raster image"
 | 
			
		||||
Qgis.TiledSceneRendererFlag.__doc__ = "Flags which control how tiled scene 2D renderers behave.\n\n.. versionadded:: 3.34\n\n" + '* ``RequiresTextures``: ' + Qgis.TiledSceneRendererFlag.RequiresTextures.__doc__ + '\n' + '* ``ForceRasterRender``: ' + Qgis.TiledSceneRendererFlag.ForceRasterRender.__doc__
 | 
			
		||||
Qgis.TiledSceneRendererFlag.RendersTriangles.__doc__ = "Renderer can render triangle primitives"
 | 
			
		||||
Qgis.TiledSceneRendererFlag.RendersLines.__doc__ = "Renderer can render line primitives"
 | 
			
		||||
Qgis.TiledSceneRendererFlag.__doc__ = "Flags which control how tiled scene 2D renderers behave.\n\n.. versionadded:: 3.34\n\n" + '* ``RequiresTextures``: ' + Qgis.TiledSceneRendererFlag.RequiresTextures.__doc__ + '\n' + '* ``ForceRasterRender``: ' + Qgis.TiledSceneRendererFlag.ForceRasterRender.__doc__ + '\n' + '* ``RendersTriangles``: ' + Qgis.TiledSceneRendererFlag.RendersTriangles.__doc__ + '\n' + '* ``RendersLines``: ' + Qgis.TiledSceneRendererFlag.RendersLines.__doc__
 | 
			
		||||
# --
 | 
			
		||||
Qgis.TiledSceneRendererFlag.baseClass = Qgis
 | 
			
		||||
Qgis.TiledSceneRendererFlags.baseClass = Qgis
 | 
			
		||||
 | 
			
		||||
@ -2209,6 +2209,8 @@ The development version
 | 
			
		||||
    {
 | 
			
		||||
      RequiresTextures,
 | 
			
		||||
      ForceRasterRender,
 | 
			
		||||
      RendersTriangles,
 | 
			
		||||
      RendersLines,
 | 
			
		||||
    };
 | 
			
		||||
 | 
			
		||||
    typedef QFlags<Qgis::TiledSceneRendererFlag> TiledSceneRendererFlags;
 | 
			
		||||
 | 
			
		||||
@ -3878,6 +3878,8 @@ class CORE_EXPORT Qgis
 | 
			
		||||
    {
 | 
			
		||||
      RequiresTextures = 1 << 0,  //!< Renderer requires textures
 | 
			
		||||
      ForceRasterRender = 1 << 1, //!< Layer should always be rendered as a raster image
 | 
			
		||||
      RendersTriangles = 1 << 2, //!< Renderer can render triangle primitives
 | 
			
		||||
      RendersLines = 1 << 3, //!< Renderer can render line primitives
 | 
			
		||||
    };
 | 
			
		||||
    Q_ENUM( TiledSceneRendererFlag )
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
@ -392,10 +392,12 @@ void QgsTiledSceneLayerRenderer::renderPrimitive( const tinygltf::Model &model,
 | 
			
		||||
  switch ( primitive.mode )
 | 
			
		||||
  {
 | 
			
		||||
    case TINYGLTF_MODE_TRIANGLES:
 | 
			
		||||
      if ( mRenderer->flags() & Qgis::TiledSceneRendererFlag::RendersTriangles )
 | 
			
		||||
        renderTrianglePrimitive( model, primitive, tile, tileTranslationEcef, gltfLocalTransform, contentUri, context );
 | 
			
		||||
      break;
 | 
			
		||||
 | 
			
		||||
    case TINYGLTF_MODE_LINE:
 | 
			
		||||
      if ( mRenderer->flags() & Qgis::TiledSceneRendererFlag::RendersLines )
 | 
			
		||||
        renderLinePrimitive( model, primitive, tile, tileTranslationEcef, gltfLocalTransform, contentUri, context );
 | 
			
		||||
      return;
 | 
			
		||||
 | 
			
		||||
@ -695,7 +697,7 @@ void QgsTiledSceneLayerRenderer::renderTrianglePrimitive( const tinygltf::Model
 | 
			
		||||
  }
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
void QgsTiledSceneLayerRenderer::renderLinePrimitive( const tinygltf::Model &model, const tinygltf::Primitive &primitive, const QgsTiledSceneTile &tile, const QgsVector3D &tileTranslationEcef, const QMatrix4x4 *gltfLocalTransform, const QString &contentUri, QgsTiledSceneRenderContext &context )
 | 
			
		||||
void QgsTiledSceneLayerRenderer::renderLinePrimitive( const tinygltf::Model &model, const tinygltf::Primitive &primitive, const QgsTiledSceneTile &tile, const QgsVector3D &tileTranslationEcef, const QMatrix4x4 *gltfLocalTransform, const QString &, QgsTiledSceneRenderContext &context )
 | 
			
		||||
{
 | 
			
		||||
  auto posIt = primitive.attributes.find( "POSITION" );
 | 
			
		||||
  if ( posIt == primitive.attributes.end() )
 | 
			
		||||
 | 
			
		||||
@ -69,7 +69,7 @@ void QgsTiledSceneRenderContext::textureCoordinates( float &textureX1, float &te
 | 
			
		||||
 | 
			
		||||
Qgis::TiledSceneRendererFlags QgsTiledSceneRenderer::flags() const
 | 
			
		||||
{
 | 
			
		||||
  return Qgis::TiledSceneRendererFlags();
 | 
			
		||||
  return Qgis::TiledSceneRendererFlag::RendersLines | Qgis::TiledSceneRendererFlag::RendersTriangles;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
QgsTiledSceneRenderer *QgsTiledSceneRenderer::load( QDomElement &element, const QgsReadWriteContext &context )
 | 
			
		||||
 | 
			
		||||
@ -62,7 +62,9 @@ Qgis::TiledSceneRendererFlags QgsTiledSceneTextureRenderer::flags() const
 | 
			
		||||
  // force raster rendering for this renderer type -- there's no benefit in exporting these layers as a bunch
 | 
			
		||||
  // of triangular images which are pieced together, that adds a lot of extra content to the exports and results
 | 
			
		||||
  // in files which can be extremely slow to open and render in other viewers.
 | 
			
		||||
  return Qgis::TiledSceneRendererFlag::RequiresTextures | Qgis::TiledSceneRendererFlag::ForceRasterRender;
 | 
			
		||||
  return Qgis::TiledSceneRendererFlag::RequiresTextures |
 | 
			
		||||
         Qgis::TiledSceneRendererFlag::ForceRasterRender |
 | 
			
		||||
         Qgis::TiledSceneRendererFlag::RendersTriangles;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
void QgsTiledSceneTextureRenderer::renderTriangle( QgsTiledSceneRenderContext &context, const QPolygonF &triangle )
 | 
			
		||||
 | 
			
		||||
@ -212,7 +212,8 @@ void QgsTiledSceneWireframeRenderer::stopRender( QgsTiledSceneRenderContext &con
 | 
			
		||||
 | 
			
		||||
Qgis::TiledSceneRendererFlags QgsTiledSceneWireframeRenderer::flags() const
 | 
			
		||||
{
 | 
			
		||||
  Qgis::TiledSceneRendererFlags flags;
 | 
			
		||||
  Qgis::TiledSceneRendererFlags flags = Qgis::TiledSceneRendererFlag::RendersTriangles |
 | 
			
		||||
                                        Qgis::TiledSceneRendererFlag::RendersLines;
 | 
			
		||||
 | 
			
		||||
  if ( mUseTextureColors )
 | 
			
		||||
    flags |= Qgis::TiledSceneRendererFlag::RequiresTextures;
 | 
			
		||||
 | 
			
		||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user