summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAntti Määttä <antti.maatta@qt.io>2019-06-17 14:33:15 +0300
committerAntti Määttä <antti.maatta@qt.io>2019-06-17 14:34:03 +0300
commitba909c8bd05fd66eb103eadd69dfd8a03072394e (patch)
tree02ad55d4ad8153c96f6408e6a2614f4f9e9346b7
parentdf7ef9cc5eca1e46e00bf171ae10d5e3421f26aa (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>
-rw-r--r--src/runtimerender/Qt3DSDistanceFieldRenderer.cpp3
-rw-r--r--src/runtimerender/rendererimpl/Qt3DSRendererImplLayerRenderPreparationData.cpp1
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);