From ccc936966085bc23a8f7bcd67b4e1a14e0f8da40 Mon Sep 17 00:00:00 2001 From: Sam Hocevar Date: Wed, 14 Aug 2013 10:05:55 +0000 Subject: [PATCH] gpu: avoid unnecessary OpenGL context changes. --- src/scene.cpp | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/src/scene.cpp b/src/scene.cpp index 54d6ab97..bd413c47 100644 --- a/src/scene.cpp +++ b/src/scene.cpp @@ -190,13 +190,14 @@ Array const &Scene::GetLights() const void Scene::Render() // XXX: rename to Blit() { RenderContext rc; - rc.SetDepthFunc(DepthFunc::LessOrEqual); - rc.SetBlendFunc(BlendFunc::SrcAlpha, BlendFunc::OneMinusSrcAlpha); - rc.SetAlphaFunc(AlphaFunc::GreaterOrEqual, 0.01f); /* Early test if nothing needs to be rendered */ if (data->m_tiles.Count()) { + rc.SetDepthFunc(DepthFunc::LessOrEqual); + rc.SetBlendFunc(BlendFunc::SrcAlpha, BlendFunc::OneMinusSrcAlpha); + rc.SetAlphaFunc(AlphaFunc::GreaterOrEqual, 0.01f); + PushCamera(data->m_default_cam); #if defined USE_D3D9 || defined _XBOX @@ -295,6 +296,10 @@ void Scene::Render() // XXX: rename to Blit() if (data->m_lines.Count()) { + rc.SetDepthFunc(DepthFunc::LessOrEqual); + rc.SetBlendFunc(BlendFunc::SrcAlpha, BlendFunc::OneMinusSrcAlpha); + rc.SetAlphaFunc(AlphaFunc::GreaterOrEqual, 0.01f); + int linecount = data->m_lines.Count(); if (!data->m_line_shader)