diff options
author | Antti Määttä <antti.maatta@qt.io> | 2019-06-17 14:33:15 +0300 |
---|---|---|
committer | Antti Määttä <antti.maatta@qt.io> | 2019-06-17 14:34:03 +0300 |
commit | ba909c8bd05fd66eb103eadd69dfd8a03072394e (patch) | |
tree | 02ad55d4ad8153c96f6408e6a2614f4f9e9346b7 /src | |
parent | df7ef9cc5eca1e46e00bf171ae10d5e3421f26aa (diff) |
Do not build distance field shaders if they are not used
Task-number: QT3DS-3665
Change-Id: I6c826ff8d562fa7884431832ad6e6967876e2ee4
Reviewed-by: Miikka Heikkinen <miikka.heikkinen@qt.io>
Diffstat (limited to 'src')
-rw-r--r-- | src/runtimerender/Qt3DSDistanceFieldRenderer.cpp | 3 | ||||
-rw-r--r-- | src/runtimerender/rendererimpl/Qt3DSRendererImplLayerRenderPreparationData.cpp | 1 |
2 files changed, 3 insertions, 1 deletions
diff --git a/src/runtimerender/Qt3DSDistanceFieldRenderer.cpp b/src/runtimerender/Qt3DSDistanceFieldRenderer.cpp index 7ec3834..d445a3f 100644 --- a/src/runtimerender/Qt3DSDistanceFieldRenderer.cpp +++ b/src/runtimerender/Qt3DSDistanceFieldRenderer.cpp @@ -611,6 +611,8 @@ static QVector<T> fillIndexBuffer(uint quadCount) void Q3DSDistanceFieldRenderer::buildShaders() { + if (m_shader.program) + return; IShaderProgramGenerator &gen = m_context->GetShaderProgramGenerator(); gen.BeginProgram(); IShaderStageGenerator &vertexGenerator(*gen.GetStage(ShaderGeneratorStages::Vertex)); @@ -961,7 +963,6 @@ void Q3DSDistanceFieldRenderer::setContext(IQt3DSRenderContext &context) { m_context = &context; m_glyphCacheManager.setContext(context); - buildShaders(); } ITextRendererCore &ITextRendererCore::createDistanceFieldRenderer(NVFoundationBase &fnd) diff --git a/src/runtimerender/rendererimpl/Qt3DSRendererImplLayerRenderPreparationData.cpp b/src/runtimerender/rendererimpl/Qt3DSRendererImplLayerRenderPreparationData.cpp index 8afa3c0..5d1e4ed 100644 --- a/src/runtimerender/rendererimpl/Qt3DSRendererImplLayerRenderPreparationData.cpp +++ b/src/runtimerender/rendererimpl/Qt3DSRendererImplLayerRenderPreparationData.cpp @@ -388,6 +388,7 @@ namespace render { Q3DSDistanceFieldRenderer *distanceFieldText = static_cast<Q3DSDistanceFieldRenderer *>( m_Renderer.GetQt3DSContext().getDistanceFieldRenderer()); + distanceFieldText->buildShaders(); theRenderable = RENDER_FRAME_NEW(SDistanceFieldRenderable)( theFlags, inText.GetGlobalPos(), inText, inText.m_Bounds, theMVP, *distanceFieldText); |