diff options
author | Tamito Kajiyama <rd6t-kjym@asahi-net.or.jp> | 2011-06-25 04:49:53 +0400 |
---|---|---|
committer | Tamito Kajiyama <rd6t-kjym@asahi-net.or.jp> | 2011-06-25 04:49:53 +0400 |
commit | d65ebf8c847c18f8be568eab4d5c65e7b630a40f (patch) | |
tree | 2795070d936c6ec7012a0339ea74d1d4b317c3d4 /source/blender/editors/render/render_opengl.c | |
parent | 17ee056fc6d15abc4b69a24ceac0e7f3d4dffa47 (diff) | |
parent | a03707d408b9e37cd11124c93b1516eae9522139 (diff) |
Merged changes in the trunk up to revision 37799.
Note for VS2008 plus CMake users:
I had to remove OpenEXR debug libs from the "blender" project properties >
Linker > Additional Dependencies. Otherwise I got a number of linker errors
concerning duplicated symbols between libcmt.lib and libcmtd.lib.
Diffstat (limited to 'source/blender/editors/render/render_opengl.c')
-rw-r--r-- | source/blender/editors/render/render_opengl.c | 22 |
1 files changed, 22 insertions, 0 deletions
diff --git a/source/blender/editors/render/render_opengl.c b/source/blender/editors/render/render_opengl.c index 98463ce955f..a55f9101a0f 100644 --- a/source/blender/editors/render/render_opengl.c +++ b/source/blender/editors/render/render_opengl.c @@ -220,6 +220,11 @@ static void screen_opengl_render_apply(OGLRender *oglrender) if(oglrender->write_still) { char name[FILE_MAX]; int ok; + + if(scene->r.planes == 8) { + IMB_color_to_bw(ibuf); + } + BKE_makepicstring(name, scene->r.pic, scene->r.cfra, scene->r.imtype, scene->r.scemode & R_EXTENSION, FALSE); ok= BKE_write_ibuf(ibuf, name, scene->r.imtype, scene->r.subimtype, scene->r.quality); /* no need to stamp here */ if(ok) printf("OpenGL Render written to '%s'\n", name); @@ -433,6 +438,19 @@ static int screen_opengl_render_anim_step(bContext *C, wmOperator *op) ibuf= BKE_image_acquire_ibuf(oglrender->ima, &oglrender->iuser, &lock); if(ibuf) { + short ibuf_free= FALSE; + + /* color -> greyscale */ + /* editing directly would alter the render view */ + if(scene->r.planes == 8) { + ImBuf *ibuf_bw= IMB_dupImBuf(ibuf); + IMB_color_to_bw(ibuf_bw); + // IMB_freeImBuf(ibuf); /* owned by the image */ + ibuf= ibuf_bw; + + ibuf_free= TRUE; + } + if(BKE_imtype_is_movie(scene->r.imtype)) { ok= oglrender->mh->append_movie(&scene->r, CFRA, (int*)ibuf->rect, oglrender->sizex, oglrender->sizey, oglrender->reports); if(ok) { @@ -453,6 +471,10 @@ static int screen_opengl_render_anim_step(bContext *C, wmOperator *op) BKE_reportf(op->reports, RPT_INFO, "Saved file: %s", name); } } + + if(ibuf_free) { + IMB_freeImBuf(ibuf); + } } BKE_image_release_ibuf(oglrender->ima, lock); |