[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