diff options
author | Campbell Barton <ideasman42@gmail.com> | 2021-01-27 12:21:55 +0300 |
---|---|---|
committer | Campbell Barton <ideasman42@gmail.com> | 2021-01-27 12:23:00 +0300 |
commit | ea01c8c5f6ce5bf7df1af13795155f2dec473e0a (patch) | |
tree | 2e4054be7b163c6ba02d8702809cd767940ed08d /source/blender/python | |
parent | 4b7b4efd5be6c2c06f6f257c07f429aede7ddc0f (diff) |
Fix T84402: Off-screen rendering works only once from Python
Off-screen drawing doesn't work once the 'bgl' workaround is enabled.
Disable this for off-screen drawing.
Diffstat (limited to 'source/blender/python')
-rw-r--r-- | source/blender/python/gpu/gpu_py_offscreen.c | 10 |
1 files changed, 10 insertions, 0 deletions
diff --git a/source/blender/python/gpu/gpu_py_offscreen.c b/source/blender/python/gpu/gpu_py_offscreen.c index 00d367c603b..51038aae598 100644 --- a/source/blender/python/gpu/gpu_py_offscreen.c +++ b/source/blender/python/gpu/gpu_py_offscreen.c @@ -247,6 +247,12 @@ static PyObject *py_offscreen_draw_view3d(BPyGPUOffScreen *self, PyObject *args, depsgraph = BKE_scene_ensure_depsgraph(G_MAIN, scene, view_layer); + /* Disable 'bgl' state since it interfere with off-screen drawing, see: T84402. */ + const bool is_bgl = GPU_bgl_get(); + if (is_bgl) { + GPU_bgl_end(); + } + GPU_offscreen_bind(self->ofs, true); ED_view3d_draw_offscreen(depsgraph, @@ -267,6 +273,10 @@ static PyObject *py_offscreen_draw_view3d(BPyGPUOffScreen *self, PyObject *args, GPU_offscreen_unbind(self->ofs, true); + if (is_bgl) { + GPU_bgl_start(); + } + Py_RETURN_NONE; } |