summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-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);