Cleanup: GPU: Move XOR logic op to gpu_state.c

This commit is contained in:
Clément Foucault 2020-07-16 03:31:25 +02:00
parent 3481f6eaf2
commit 436d38bb54
4 changed files with 11 additions and 13 deletions

View File

@ -373,8 +373,7 @@ static void draw_stabilization_border(
/* Exclusive OR allows to get orig value when second operand is 0,
* and negative of orig value when second operand is 1. */
glEnable(GL_COLOR_LOGIC_OP);
glLogicOp(GL_XOR);
GPU_logic_op_xor_set(true);
GPU_matrix_push();
GPU_matrix_translate_2f(x, y);
@ -399,7 +398,7 @@ static void draw_stabilization_border(
GPU_matrix_pop();
glDisable(GL_COLOR_LOGIC_OP);
GPU_logic_op_xor_set(false);
}
}
@ -790,15 +789,14 @@ static void draw_marker_areas(SpaceClip *sc,
immUniform1f("dash_width", 6.0f);
immUniform1f("dash_factor", 0.5f);
glEnable(GL_COLOR_LOGIC_OP);
glLogicOp(GL_XOR);
GPU_logic_op_xor_set(true);
immBegin(GPU_PRIM_LINES, 2);
immVertex2fv(shdr_pos, pos);
immVertex2fv(shdr_pos, marker_pos);
immEnd();
glDisable(GL_COLOR_LOGIC_OP);
GPU_logic_op_xor_set(false);
}
}

View File

@ -447,15 +447,16 @@ void ED_imbuf_sample_draw(const bContext *C, ARegion *region, void *arg_info)
(float[2]){event->x - region->winrct.xmin, event->y - region->winrct.ymin},
(float)(info->sample_size / 2.0f) * sima->zoom);
glEnable(GL_COLOR_LOGIC_OP);
glLogicOp(GL_XOR);
GPU_logic_op_xor_set(true);
GPU_line_width(1.0f);
imm_draw_box_wire_2d(pos,
(float)sample_rect_fl.xmin,
(float)sample_rect_fl.ymin,
(float)sample_rect_fl.xmax,
(float)sample_rect_fl.ymax);
glDisable(GL_COLOR_LOGIC_OP);
GPU_logic_op_xor_set(false);
immUnbindProgram();
}

View File

@ -69,7 +69,7 @@ void GPU_viewport_size_get_i(int coords[4]);
void GPU_flush(void);
void GPU_finish(void);
void GPU_logic_op_invert_set(bool enable);
void GPU_logic_op_xor_set(bool enable);
/* Attribute push & pop. */
typedef enum eGPUAttrMask {

View File

@ -181,14 +181,13 @@ void GPU_finish(void)
glFinish();
}
void GPU_logic_op_invert_set(bool enable)
void GPU_logic_op_xor_set(bool enable)
{
if (enable) {
glLogicOp(GL_INVERT);
glLogicOp(GL_XOR);
glEnable(GL_COLOR_LOGIC_OP);
}
else {
glLogicOp(GL_COPY);
glDisable(GL_COLOR_LOGIC_OP);
}
}