diff --git a/src/modules/graphics/Video.cpp b/src/modules/graphics/Video.cpp index 710942ea0..b686f5d03 100644 --- a/src/modules/graphics/Video.cpp +++ b/src/modules/graphics/Video.cpp @@ -115,6 +115,15 @@ void Video::draw(Graphics *gfx, const Matrix4 &m) { update(); + // setVideoTextures may call flushBatchedDraws before setting the textures, so + // we can't call it after requestBatchedDraw. + auto shader = Shader::current; + if (Shader::isDefaultActive()) + shader = Shader::standardShaders[Shader::STANDARD_VIDEO]; + + if (shader != nullptr) + shader->setVideoTextures(textures[0], textures[1], textures[2]); + const Matrix4 &tm = gfx->getTransform(); bool is2D = tm.isAffine2DTransform(); @@ -145,9 +154,6 @@ void Video::draw(Graphics *gfx, const Matrix4 &m) verts[i].color = c; } - if (Shader::current != nullptr) - Shader::current->setVideoTextures(textures[0], textures[1], textures[2]); - gfx->flushBatchedDraws(); }