[Bf-blender-cvs] [cb3daaf355] blender2.8: Immediate mode: edit_curve_paint 1/2

Dalai Felinto noreply at git.blender.org
Mon Feb 6 13:00:23 CET 2017


Commit: cb3daaf3550deb3926ef7f5dfc8d740f3f18ae27
Author: Dalai Felinto
Date:   Mon Feb 6 12:40:02 2017 +0100
Branches: blender2.8
https://developer.blender.org/rBcb3daaf3550deb3926ef7f5dfc8d740f3f18ae27

Immediate mode: edit_curve_paint 1/2

Part of T49043

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

M	source/blender/editors/curve/editcurve_paint.c

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

diff --git a/source/blender/editors/curve/editcurve_paint.c b/source/blender/editors/curve/editcurve_paint.c
index 34e026a3ef..f0cec1a84b 100644
--- a/source/blender/editors/curve/editcurve_paint.c
+++ b/source/blender/editors/curve/editcurve_paint.c
@@ -48,6 +48,8 @@
 #include "BIF_gl.h"
 #include "BIF_glutil.h"
 
+#include "GPU_immediate.h"
+
 #include "curve_intern.h"
 
 #include "UI_resources.h"
@@ -514,30 +516,45 @@ static void curve_draw_stroke_3d(const struct bContext *UNUSED(C), ARegion *UNUS
 		}
 
 		{
+			VertexFormat *format = immVertexFormat();
+			unsigned pos = add_attrib(format, "pos", GL_FLOAT, 3, KEEP_FLOAT);
+			immBindBuiltinProgram(GPU_SHADER_3D_UNIFORM_COLOR);
+
 			glEnable(GL_BLEND);
 			glEnable(GL_LINE_SMOOTH);
 
-			glEnableClientState(GL_VERTEX_ARRAY);
-			glVertexPointer(3, GL_FLOAT, 0, coord_array);
-
-			cpack(0x0);
+			imm_cpack(0x0);
+			immBegin(GL_LINE_STRIP, stroke_len);
 			glLineWidth(3.0f);
-			glDrawArrays(GL_LINE_STRIP, 0, stroke_len);
 
-			if (v3d->zbuf)
+			if (v3d->zbuf) {
 				glDisable(GL_DEPTH_TEST);
+			}
+
+			for (int i = 0; i < stroke_len; i++) {
+				immVertex3fv(pos, coord_array[i]);
+			}
+
+			immEnd();
 
-			cpack(0xffffffff);
+			imm_cpack(0xffffffff);
+			immBegin(GL_LINE_STRIP, stroke_len);
 			glLineWidth(1.0f);
-			glDrawArrays(GL_LINE_STRIP, 0, stroke_len);
 
-			if (v3d->zbuf)
-				glEnable(GL_DEPTH_TEST);
+			for (int i = 0; i < stroke_len; i++) {
+				immVertex3fv(pos, coord_array[i]);
+			}
+
+			immEnd();
 
-			glDisableClientState(GL_VERTEX_ARRAY);
+			if (v3d->zbuf) {
+				glEnable(GL_DEPTH_TEST);
+			}
 
 			glDisable(GL_BLEND);
 			glDisable(GL_LINE_SMOOTH);
+
+			immUnbindProgram();
 		}
 
 		MEM_freeN(coord_array);




More information about the Bf-blender-cvs mailing list