diff options
-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); |