mirror of
https://github.com/qgis/QGIS.git
synced 2025-10-18 00:06:00 -04: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
|
# monkey patching scoped based enum
|
||||||
Qgis.TiledSceneRendererFlag.RequiresTextures.__doc__ = "Renderer requires textures"
|
Qgis.TiledSceneRendererFlag.RequiresTextures.__doc__ = "Renderer requires textures"
|
||||||
Qgis.TiledSceneRendererFlag.ForceRasterRender.__doc__ = "Layer should always be rendered as a raster image"
|
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.TiledSceneRendererFlag.baseClass = Qgis
|
||||||
Qgis.TiledSceneRendererFlags.baseClass = Qgis
|
Qgis.TiledSceneRendererFlags.baseClass = Qgis
|
||||||
|
@ -2209,6 +2209,8 @@ The development version
|
|||||||
{
|
{
|
||||||
RequiresTextures,
|
RequiresTextures,
|
||||||
ForceRasterRender,
|
ForceRasterRender,
|
||||||
|
RendersTriangles,
|
||||||
|
RendersLines,
|
||||||
};
|
};
|
||||||
|
|
||||||
typedef QFlags<Qgis::TiledSceneRendererFlag> TiledSceneRendererFlags;
|
typedef QFlags<Qgis::TiledSceneRendererFlag> TiledSceneRendererFlags;
|
||||||
|
@ -3878,6 +3878,8 @@ class CORE_EXPORT Qgis
|
|||||||
{
|
{
|
||||||
RequiresTextures = 1 << 0, //!< Renderer requires textures
|
RequiresTextures = 1 << 0, //!< Renderer requires textures
|
||||||
ForceRasterRender = 1 << 1, //!< Layer should always be rendered as a raster image
|
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 )
|
Q_ENUM( TiledSceneRendererFlag )
|
||||||
|
|
||||||
|
@ -392,11 +392,13 @@ void QgsTiledSceneLayerRenderer::renderPrimitive( const tinygltf::Model &model,
|
|||||||
switch ( primitive.mode )
|
switch ( primitive.mode )
|
||||||
{
|
{
|
||||||
case TINYGLTF_MODE_TRIANGLES:
|
case TINYGLTF_MODE_TRIANGLES:
|
||||||
renderTrianglePrimitive( model, primitive, tile, tileTranslationEcef, gltfLocalTransform, contentUri, context );
|
if ( mRenderer->flags() & Qgis::TiledSceneRendererFlag::RendersTriangles )
|
||||||
|
renderTrianglePrimitive( model, primitive, tile, tileTranslationEcef, gltfLocalTransform, contentUri, context );
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case TINYGLTF_MODE_LINE:
|
case TINYGLTF_MODE_LINE:
|
||||||
renderLinePrimitive( model, primitive, tile, tileTranslationEcef, gltfLocalTransform, contentUri, context );
|
if ( mRenderer->flags() & Qgis::TiledSceneRendererFlag::RendersLines )
|
||||||
|
renderLinePrimitive( model, primitive, tile, tileTranslationEcef, gltfLocalTransform, contentUri, context );
|
||||||
return;
|
return;
|
||||||
|
|
||||||
case TINYGLTF_MODE_POINTS:
|
case TINYGLTF_MODE_POINTS:
|
||||||
@ -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" );
|
auto posIt = primitive.attributes.find( "POSITION" );
|
||||||
if ( posIt == primitive.attributes.end() )
|
if ( posIt == primitive.attributes.end() )
|
||||||
|
@ -69,7 +69,7 @@ void QgsTiledSceneRenderContext::textureCoordinates( float &textureX1, float &te
|
|||||||
|
|
||||||
Qgis::TiledSceneRendererFlags QgsTiledSceneRenderer::flags() const
|
Qgis::TiledSceneRendererFlags QgsTiledSceneRenderer::flags() const
|
||||||
{
|
{
|
||||||
return Qgis::TiledSceneRendererFlags();
|
return Qgis::TiledSceneRendererFlag::RendersLines | Qgis::TiledSceneRendererFlag::RendersTriangles;
|
||||||
}
|
}
|
||||||
|
|
||||||
QgsTiledSceneRenderer *QgsTiledSceneRenderer::load( QDomElement &element, const QgsReadWriteContext &context )
|
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
|
// 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
|
// 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.
|
// 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 )
|
void QgsTiledSceneTextureRenderer::renderTriangle( QgsTiledSceneRenderContext &context, const QPolygonF &triangle )
|
||||||
|
@ -212,7 +212,8 @@ void QgsTiledSceneWireframeRenderer::stopRender( QgsTiledSceneRenderContext &con
|
|||||||
|
|
||||||
Qgis::TiledSceneRendererFlags QgsTiledSceneWireframeRenderer::flags() const
|
Qgis::TiledSceneRendererFlags QgsTiledSceneWireframeRenderer::flags() const
|
||||||
{
|
{
|
||||||
Qgis::TiledSceneRendererFlags flags;
|
Qgis::TiledSceneRendererFlags flags = Qgis::TiledSceneRendererFlag::RendersTriangles |
|
||||||
|
Qgis::TiledSceneRendererFlag::RendersLines;
|
||||||
|
|
||||||
if ( mUseTextureColors )
|
if ( mUseTextureColors )
|
||||||
flags |= Qgis::TiledSceneRendererFlag::RequiresTextures;
|
flags |= Qgis::TiledSceneRendererFlag::RequiresTextures;
|
||||||
|
Loading…
x
Reference in New Issue
Block a user