From 52543be9a6a4398a3cb5ec19df3659aa42a38727 Mon Sep 17 00:00:00 2001 From: Miguel Pozo Date: Mon, 20 Jul 2020 13:56:29 +0200 Subject: Python API: option to use OpenGL context in RenderEngine.render When bl_use_gpu_context is set, an OpenGL context will be available for OpenGL based render engines. Differential Revision: https://developer.blender.org/D8305 --- source/blender/render/extern/include/RE_engine.h | 1 + source/blender/render/intern/source/external_engine.c | 8 ++++++++ 2 files changed, 9 insertions(+) (limited to 'source/blender/render') diff --git a/source/blender/render/extern/include/RE_engine.h b/source/blender/render/extern/include/RE_engine.h index 77a60854616..51eb290b0b8 100644 --- a/source/blender/render/extern/include/RE_engine.h +++ b/source/blender/render/extern/include/RE_engine.h @@ -60,6 +60,7 @@ struct bNodeTree; #define RE_USE_SHADING_NODES_CUSTOM 64 #define RE_USE_SPHERICAL_STEREO 128 #define RE_USE_STEREO_VIEWPORT 256 +#define RE_USE_GPU_CONTEXT 512 /* RenderEngine.flag */ #define RE_ENGINE_ANIMATION 1 diff --git a/source/blender/render/intern/source/external_engine.c b/source/blender/render/intern/source/external_engine.c index e1fbf6d19de..633b9324d9f 100644 --- a/source/blender/render/intern/source/external_engine.c +++ b/source/blender/render/intern/source/external_engine.c @@ -863,8 +863,16 @@ int RE_engine_render(Render *re, int do_all) re->draw_lock(re->dlh, 0); } + if (engine->type->flag & RE_USE_GPU_CONTEXT) { + DRW_render_context_enable(engine->re); + } + type->render(engine, engine->depsgraph); + if (engine->type->flag & RE_USE_GPU_CONTEXT) { + DRW_render_context_disable(engine->re); + } + /* Grease pencil render over previous render result. * * NOTE: External engine might have been requested to free its -- cgit v1.2.3