[Bf-blender-cvs] [fd5b882a679] blender2.8: Move cage_manipulator.c to new GL code.

Bastien Montagne noreply at git.blender.org
Tue Apr 11 15:19:22 CEST 2017


Commit: fd5b882a679a053687339ec53f127c6ff548a693
Author: Bastien Montagne
Date:   Tue Apr 11 15:16:53 2017 +0200
Branches: blender2.8
https://developer.blender.org/rBfd5b882a679a053687339ec53f127c6ff548a693

Move cage_manipulator.c to new GL code.

Note: I’d assume gawain equivalent to glDrawArrays would be batches? But
for two lines drawn twice this looks totally overkill anyway, so
switched back to basic immediate-mode-like API.

A bit frustrating to work on this code, since afaict you cannot check
the results in Blender, being mostly unused currently...

===================================================================

M	source/blender/windowmanager/manipulators/intern/manipulator_library/cage_manipulator.c

===================================================================

diff --git a/source/blender/windowmanager/manipulators/intern/manipulator_library/cage_manipulator.c b/source/blender/windowmanager/manipulators/intern/manipulator_library/cage_manipulator.c
index 4ef3f84dfc7..59ae06eb30b 100644
--- a/source/blender/windowmanager/manipulators/intern/manipulator_library/cage_manipulator.c
+++ b/source/blender/windowmanager/manipulators/intern/manipulator_library/cage_manipulator.c
@@ -124,6 +124,7 @@ static void rect_transform_draw_interaction(
         const float half_w, const float half_h,
         const float w, const float h, const float line_width)
 {
+	/* Why generate coordinates for 4 vertices, when we only use three? */
 	float verts[4][2];
 
 	switch (highlighted) {
@@ -175,15 +176,28 @@ static void rect_transform_draw_interaction(
 			return;
 	}
 
-	glEnableClientState(GL_VERTEX_ARRAY);
-	glVertexPointer(2, GL_FLOAT, 0, verts);
+	VertexFormat *format = immVertexFormat();
+	unsigned int pos = VertexFormat_add_attrib(format, "pos", COMP_F32, 2, KEEP_FLOAT);
+	unsigned int color = VertexFormat_add_attrib(format, "color", COMP_F32, 3, KEEP_FLOAT);
+	immBindBuiltinProgram(GPU_SHADER_2D_UNIFORM_COLOR);
+
 	glLineWidth(line_width + 3.0);
-	glColor3f(0.0, 0.0, 0.0);
-	glDrawArrays(GL_LINE_STRIP, 0, 3);
+
+	immBegin(PRIM_LINE_STRIP, 3);
+	immAttrib3f(color, 0.0f, 0.0f, 0.0f);
+	immVertex2fv(pos, verts[0]);
+	immVertex2fv(pos, verts[1]);
+	immVertex2fv(pos, verts[2]);
+	immEnd();
+
 	glLineWidth(line_width);
-	glColor3fv(col);
-	glDrawArrays(GL_LINE_STRIP, 0, 3);
-	glLineWidth(1.0);
+
+	immBegin(PRIM_LINE_STRIP, 3);
+	immAttrib3fv(color, col);
+	immVertex2fv(pos, verts[0]);
+	immVertex2fv(pos, verts[1]);
+	immVertex2fv(pos, verts[2]);
+	immEnd();
 }
 
 static void manipulator_rect_transform_draw(const bContext *UNUSED(C), wmManipulator *manipulator)




More information about the Bf-blender-cvs mailing list