[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [24417] trunk/blender/source/blender/ editors: OpenGL grease pencil render

Campbell Barton ideasman42 at gmail.com
Mon Nov 9 09:03:45 CET 2009


Revision: 24417
          http://projects.blender.org/plugins/scmsvn/viewcvs.php?view=rev&root=bf-blender&revision=24417
Author:   campbellbarton
Date:     2009-11-09 09:03:43 +0100 (Mon, 09 Nov 2009)

Log Message:
-----------
OpenGL grease pencil render

Algorith: needed to add some functions since offscreen render doesn't have a context pointer
 - draw_gpencil_3dview_ext
 - gpencil_data_get_active_v3d

Modified Paths:
--------------
    trunk/blender/source/blender/editors/gpencil/drawgpencil.c
    trunk/blender/source/blender/editors/gpencil/gpencil_edit.c
    trunk/blender/source/blender/editors/include/ED_gpencil.h
    trunk/blender/source/blender/editors/space_view3d/view3d_draw.c

Modified: trunk/blender/source/blender/editors/gpencil/drawgpencil.c
===================================================================
--- trunk/blender/source/blender/editors/gpencil/drawgpencil.c	2009-11-09 03:22:16 UTC (rev 24416)
+++ trunk/blender/source/blender/editors/gpencil/drawgpencil.c	2009-11-09 08:03:43 UTC (rev 24417)
@@ -744,22 +744,27 @@
 /* draw grease-pencil sketches to specified 3d-view assuming that matrices are already set correctly 
  * Note: this gets called twice - first time with only3d=1 to draw 3d-strokes, second time with only3d=0 for screen-aligned strokes
  */
-void draw_gpencil_3dview (bContext *C, short only3d)
+void draw_gpencil_3dview_ext (Scene *scene, ARegion *ar, short only3d)
 {
-	ARegion *ar= CTX_wm_region(C);
-	Scene *scene= CTX_data_scene(C);
 	bGPdata *gpd;
 	int dflag = 0;
-	
+
 	/* check that we have grease-pencil stuff to draw */
-	gpd= gpencil_data_get_active(C); // XXX
-	if (gpd == NULL) return;
-	
+	gpd= gpencil_data_get_active_v3d(scene); // XXX
+	if(gpd == NULL) return;
+
 	/* draw it! */
 	if (only3d) dflag |= (GP_DRAWDATA_ONLY3D|GP_DRAWDATA_NOSTATUS);
 	gp_draw_data(gpd, 0, 0, ar->winx, ar->winy, CFRA, dflag);
 }
 
+void draw_gpencil_3dview (bContext *C, short only3d)
+{
+	ARegion *ar= CTX_wm_region(C);
+	Scene *scene= CTX_data_scene(C);
+	draw_gpencil_3dview_ext(scene, ar, only3d);
+}
+
 /* draw grease-pencil sketches to opengl render window assuming that matrices are already set correctly */
 // XXX porting note, ogl render will probably be a window with one 3d region
 void draw_gpencil_oglrender (bContext *C)

Modified: trunk/blender/source/blender/editors/gpencil/gpencil_edit.c
===================================================================
--- trunk/blender/source/blender/editors/gpencil/gpencil_edit.c	2009-11-09 03:22:16 UTC (rev 24416)
+++ trunk/blender/source/blender/editors/gpencil/gpencil_edit.c	2009-11-09 08:03:43 UTC (rev 24417)
@@ -155,6 +155,13 @@
 	return (gpd_ptr) ? *(gpd_ptr) : NULL;
 }
 
+/* needed for offscreen rendering */
+bGPdata *gpencil_data_get_active_v3d (Scene *scene)
+{
+	bGPdata *gpd= scene->basact ? scene->basact->object->gpd : NULL;
+	return gpd ? gpd : scene->gpd;
+}
+
 /* ************************************************ */
 /* Panel Operators */
 

Modified: trunk/blender/source/blender/editors/include/ED_gpencil.h
===================================================================
--- trunk/blender/source/blender/editors/include/ED_gpencil.h	2009-11-09 03:22:16 UTC (rev 24416)
+++ trunk/blender/source/blender/editors/include/ED_gpencil.h	2009-11-09 08:03:43 UTC (rev 24417)
@@ -59,6 +59,7 @@
 
 struct bGPdata **gpencil_data_get_pointers(struct bContext *C, struct PointerRNA *ptr);
 struct bGPdata *gpencil_data_get_active(struct bContext *C);
+struct bGPdata *gpencil_data_get_active_v3d(struct Scene *scene); /* for offscreen rendering */
 
 /* ----------- Grease Pencil Operators ----------------- */
 
@@ -71,6 +72,7 @@
 void draw_gpencil_2dimage(struct bContext *C, struct ImBuf *ibuf);
 void draw_gpencil_2dview(struct bContext *C, short onlyv2d);
 void draw_gpencil_3dview(struct bContext *C, short only3d);
+void draw_gpencil_3dview_ext(struct Scene *scene, struct ARegion *ar, short only3d);
 void draw_gpencil_oglrender(struct bContext *C);
 
 void gpencil_panel_standard(const struct bContext *C, struct Panel *pa);

Modified: trunk/blender/source/blender/editors/space_view3d/view3d_draw.c
===================================================================
--- trunk/blender/source/blender/editors/space_view3d/view3d_draw.c	2009-11-09 03:22:16 UTC (rev 24416)
+++ trunk/blender/source/blender/editors/space_view3d/view3d_draw.c	2009-11-09 08:03:43 UTC (rev 24417)
@@ -2009,6 +2009,14 @@
 		glDisable(GL_DEPTH_TEST);
 	}
 
+	/* draw grease-pencil stuff */
+	draw_gpencil_3dview_ext(scene, ar, 1);
+
+	ED_region_pixelspace(ar);
+
+	/* draw grease-pencil stuff - needed to get paint-buffer shown too (since it's 2D) */
+	draw_gpencil_3dview_ext(scene, ar, 0);
+
 	GPU_free_images();
 
 	/* restore size */





More information about the Bf-blender-cvs mailing list