From ba909c8bd05fd66eb103eadd69dfd8a03072394e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Antti=20M=C3=A4=C3=A4tt=C3=A4?= Date: Mon, 17 Jun 2019 14:33:15 +0300 Subject: Do not build distance field shaders if they are not used Task-number: QT3DS-3665 Change-Id: I6c826ff8d562fa7884431832ad6e6967876e2ee4 Reviewed-by: Miikka Heikkinen --- src/runtimerender/Qt3DSDistanceFieldRenderer.cpp | 3 ++- .../rendererimpl/Qt3DSRendererImplLayerRenderPreparationData.cpp | 1 + 2 files changed, 3 insertions(+), 1 deletion(-) (limited to 'src') 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 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( m_Renderer.GetQt3DSContext().getDistanceFieldRenderer()); + distanceFieldText->buildShaders(); theRenderable = RENDER_FRAME_NEW(SDistanceFieldRenderable)( theFlags, inText.GetGlobalPos(), inText, inText.m_Bounds, theMVP, *distanceFieldText); -- cgit v1.2.3