Commit: 633a2a3592a7966c06302830715b5c5c38a6f04a
Author: Bastien Montagne
Date: Tue Apr 11 12:46:49 2017 +0200
Branches: blender2.8
https://developer.blender.org/rB633a2a3592a7966c06302830715b5c5c38a6f04a
Move arrow2d_manipulator to new immediate mode GL.
===================================================================
M
source/blender/windowmanager/manipulators/intern/manipulator_library/arrow2d_manipulator.c
===================================================================
diff --git
a/source/blender/windowmanager/manipulators/intern/manipulator_library/arrow2d_manipulator.c
b/source/blender/windowmanager/manipulators/intern/manipulator_library/arrow2d_manipulator.c
index 9edff5b6107..a12617ba94f 100644
---
a/source/blender/windowmanager/manipulators/intern/manipulator_library/arrow2d_manipulator.c
+++
b/source/blender/windowmanager/manipulators/intern/manipulator_library/arrow2d_manipulator.c
@@ -44,6 +44,8 @@
#include "ED_screen.h"
+#include "GPU_draw.h"
+#include "GPU_immediate.h"
#include "GPU_matrix.h"
#include "MEM_guardedalloc.h"
@@ -68,13 +70,15 @@ typedef struct ArrowManipulator2D {
} ArrowManipulator2D;
-static void arrow2d_draw_geom(ArrowManipulator2D *arrow, const float origin[2])
+static void arrow2d_draw_geom(ArrowManipulator2D *arrow, const float
origin[2], const float color[4])
{
const float size = 0.11f;
const float size_h = size / 2.0f;
const float len = arrow->line_len;
const float draw_line_ofs = (arrow->manipulator.line_width * 0.5f) /
arrow->manipulator.scale;
+ unsigned int pos = VertexFormat_add_attrib(immVertexFormat(), "pos",
COMP_F32, 3, KEEP_FLOAT);
+
gpuPushMatrix();
gpuTranslate2fv(origin);
gpuScaleUniform(arrow->manipulator.scale);
@@ -82,16 +86,22 @@ static void arrow2d_draw_geom(ArrowManipulator2D *arrow,
const float origin[2])
/* local offset */
gpuTranslate2f(arrow->manipulator.offset[0] + draw_line_ofs,
arrow->manipulator.offset[1]);
- /* TODO get rid of immediate mode */
- glBegin(GL_LINES);
- glVertex2f(0.0f, 0.0f);
- glVertex2f(0.0f, len);
- glEnd();
- glBegin(GL_TRIANGLES);
- glVertex2f(size_h, len);
- glVertex2f(-size_h, len);
- glVertex2f(0.0f, len + size * 1.7f);
- glEnd();
+ immBindBuiltinProgram(GPU_SHADER_2D_UNIFORM_COLOR);
+
+ immUniformColor4fv(color);
+
+ immBegin(PRIM_LINES, 2);
+ immVertex2f(pos, 0.0f, 0.0f);
+ immVertex2f(pos, 0.0f, len);
+ immEnd();
+
+ immBegin(PRIM_TRIANGLES, 3);
+ immVertex2f(pos, size_h, len);
+ immVertex2f(pos, -size_h, len);
+ immVertex2f(pos, 0.0f, len + size * 1.7f);
+ immEnd();
+
+ immUnbindProgram();
gpuPopMatrix();
}
@@ -103,18 +113,16 @@ static void manipulator_arrow2d_draw(const bContext
*UNUSED(C), struct wmManipul
manipulator_color_get(manipulator, manipulator->state &
WM_MANIPULATOR_HIGHLIGHT, col);
- glColor4fv(col);
glLineWidth(manipulator->line_width);
glEnable(GL_BLEND);
- arrow2d_draw_geom(arrow, manipulator->origin);
+ arrow2d_draw_geom(arrow, manipulator->origin, col);
glDisable(GL_BLEND);
if (arrow->manipulator.interaction_data) {
ManipulatorInteraction *inter =
arrow->manipulator.interaction_data;
- glColor4f(0.5f, 0.5f, 0.5f, 0.5f);
glEnable(GL_BLEND);
- arrow2d_draw_geom(arrow, inter->init_origin);
+ arrow2d_draw_geom(arrow, inter->init_origin, (const
float[4]){0.5f, 0.5f, 0.5f, 0.5f});
glDisable(GL_BLEND);
}
}
_______________________________________________
Bf-blender-cvs mailing list
[email protected]
https://lists.blender.org/mailman/listinfo/bf-blender-cvs