diff options
author | Clément Foucault <foucault.clem@gmail.com> | 2018-12-11 20:18:36 +0300 |
---|---|---|
committer | Clément Foucault <foucault.clem@gmail.com> | 2018-12-11 20:18:36 +0300 |
commit | 1b8e1bb6351415912d7106bca6488c6c0dd50cc3 (patch) | |
tree | 2b30515198ccf9dc832cc48274751a1b1736ff7e /source/blender/draw/intern/draw_manager_exec.c | |
parent | 2a6bc4a82cb3201ac623512e3f9f53f3890ecae2 (diff) |
DRW: Add polygon offset mode.
Diffstat (limited to 'source/blender/draw/intern/draw_manager_exec.c')
-rw-r--r-- | source/blender/draw/intern/draw_manager_exec.c | 26 |
1 files changed, 26 insertions, 0 deletions
diff --git a/source/blender/draw/intern/draw_manager_exec.c b/source/blender/draw/intern/draw_manager_exec.c index 8eefd058719..985c4a73775 100644 --- a/source/blender/draw/intern/draw_manager_exec.c +++ b/source/blender/draw/intern/draw_manager_exec.c @@ -342,6 +342,32 @@ void drw_state_set(DRWState state) } } + /* Polygon Offset */ + { + int test; + if (CHANGED_ANY_STORE_VAR( + DRW_STATE_OFFSET_POSITIVE | + DRW_STATE_OFFSET_NEGATIVE, + test)) { + if (test) { + glEnable(GL_POLYGON_OFFSET_FILL); + /* Stencil Write */ + if ((state & DRW_STATE_OFFSET_POSITIVE) != 0) { + glPolygonOffset(1.0f, 1.0f); + } + else if ((state & DRW_STATE_OFFSET_NEGATIVE) != 0) { + glPolygonOffset(-1.0f, -1.0f); + } + else { + BLI_assert(0); + } + } + else { + glDisable(GL_POLYGON_OFFSET_FILL); + } + } + } + #undef CHANGED_TO #undef CHANGED_ANY #undef CHANGED_ANY_STORE_VAR |