diff options
-rw-r--r-- | source/blender/gpu/GPU_immediate_util.h | 2 | ||||
-rw-r--r-- | source/blender/gpu/intern/gpu_immediate_util.c | 26 | ||||
-rw-r--r-- | source/blender/windowmanager/intern/wm_gesture.c | 18 |
3 files changed, 28 insertions, 18 deletions
diff --git a/source/blender/gpu/GPU_immediate_util.h b/source/blender/gpu/GPU_immediate_util.h index 730b31ed277..3131dda2a48 100644 --- a/source/blender/gpu/GPU_immediate_util.h +++ b/source/blender/gpu/GPU_immediate_util.h @@ -44,6 +44,8 @@ void imm_draw_line_box(unsigned pos, float x1, float y1, float x2, float y2); void imm_draw_line_box_3d(unsigned pos, float x1, float y1, float x2, float y2); +void imm_draw_line_box_dashed(uint pos, uint line_origin, float x1, float y1, float x2, float y2); + void imm_draw_checker_box(float x1, float y1, float x2, float y2); void imm_draw_cylinder_fill_normal_3d( diff --git a/source/blender/gpu/intern/gpu_immediate_util.c b/source/blender/gpu/intern/gpu_immediate_util.c index 52829c6956b..49ced32cd51 100644 --- a/source/blender/gpu/intern/gpu_immediate_util.c +++ b/source/blender/gpu/intern/gpu_immediate_util.c @@ -181,6 +181,32 @@ void imm_draw_line_box_3d(unsigned pos, float x1, float y1, float x2, float y2) immEnd(); } +/** Same as \a imm_draw_line_box, but for dashed shader. */ +/* TODO find a way to generate screen-space dashed lines without that line_origin ugly hack + * (would not bet it's possible with current GLSL though :( ). */ +void imm_draw_line_box_dashed(uint pos, uint line_origin, float x1, float y1, float x2, float y2) +{ + immBegin(PRIM_LINES, 8); + + immAttrib2f(line_origin, x1, y1); + immVertex2f(pos, x1, y1); + immVertex2f(pos, x1, y2); + + immAttrib2f(line_origin, x1, y2); + immVertex2f(pos, x1, y2); + immVertex2f(pos, x2, y2); + + immAttrib2f(line_origin, x2, y1); + immVertex2f(pos, x2, y2); + immVertex2f(pos, x2, y1); + + immAttrib2f(line_origin, x1, y1); + immVertex2f(pos, x2, y1); + immVertex2f(pos, x1, y1); + + immEnd(); +} + /** * Draw a standard checkerboard to indicate transparent backgrounds. */ diff --git a/source/blender/windowmanager/intern/wm_gesture.c b/source/blender/windowmanager/intern/wm_gesture.c index 38b843772ab..cfe62846bfd 100644 --- a/source/blender/windowmanager/intern/wm_gesture.c +++ b/source/blender/windowmanager/intern/wm_gesture.c @@ -199,24 +199,6 @@ static void wm_gesture_draw_line(wmGesture *gt) immUnbindProgram(); } -static void imm_draw_line_box_dashed(unsigned pos, unsigned line_origin, float x1, float y1, float x2, float y2) -{ - immBegin(PRIM_LINES, 8); - immAttrib2f(line_origin, x1, y1); - immVertex2f(pos, x1, y1); - immVertex2f(pos, x1, y2); - immAttrib2f(line_origin, x1, y2); - immVertex2f(pos, x1, y2); - immVertex2f(pos, x2, y2); - immAttrib2f(line_origin, x2, y1); - immVertex2f(pos, x2, y2); - immVertex2f(pos, x2, y1); - immAttrib2f(line_origin, x1, y1); - immVertex2f(pos, x2, y1); - immVertex2f(pos, x1, y1); - immEnd(); -} - static void wm_gesture_draw_rect(wmGesture *gt) { rcti *rect = (rcti *)gt->customdata; |