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 */


_______________________________________________
Bf-blender-cvs mailing list
[email protected]
http://lists.blender.org/mailman/listinfo/bf-blender-cvs

Reply via email to