Update the screen-dump code to use osgDB, and hence write out files in more common formats (PNG, JPEG, etc). The PPM writing code is retained for the moment, in case someone other than FG is relying upon it.
This commit is contained in:
@@ -37,7 +37,8 @@
|
||||
|
||||
#include <simgear/compiler.h>
|
||||
|
||||
#include <osg/GL>
|
||||
#include <osg/Image>
|
||||
#include <osgDB/WriteFile>
|
||||
|
||||
#include "screen-dump.hxx"
|
||||
|
||||
@@ -78,21 +79,11 @@ bool sg_glWritePPMFile(const char *filename, GLubyte *buffer, int win_width, int
|
||||
}
|
||||
|
||||
|
||||
// dump the screen buffer to a ppm file
|
||||
// dump the screen buffer to a png file
|
||||
bool sg_glDumpWindow(const char *filename, int win_width, int win_height) {
|
||||
GLubyte *buffer;
|
||||
bool result;
|
||||
|
||||
buffer = (GLubyte *) malloc(win_width*win_height*RGBA);
|
||||
|
||||
// read window contents from color buffer with glReadPixels
|
||||
glFinish();
|
||||
glReadPixels(0, 0, win_width, win_height,
|
||||
GL_RGBA, GL_UNSIGNED_BYTE, buffer);
|
||||
result = sg_glWritePPMFile( filename, buffer, win_width, win_height,
|
||||
GL_RGBA );
|
||||
free(buffer);
|
||||
|
||||
return result;
|
||||
osg::ref_ptr<osg::Image> img(new osg::Image);
|
||||
img->readPixels(0,0, win_width, win_height, GL_RGB, GL_UNSIGNED_BYTE);
|
||||
osgDB::writeImageFile(*img, filename);
|
||||
return true;
|
||||
}
|
||||
|
||||
|
||||
@@ -21,12 +21,15 @@
|
||||
//
|
||||
// $Id$
|
||||
|
||||
#ifndef SG_SCREEN_DUMP_HXX
|
||||
#define SG_SCREEN_DUMP_HXX
|
||||
|
||||
#include <simgear/compiler.h>
|
||||
|
||||
#include <osg/GL>
|
||||
|
||||
/**
|
||||
* Dump the screen buffer to a ppm file.
|
||||
* Dump the screen buffer to a PNG file.
|
||||
* @param filename name of file
|
||||
* @param win_width width of our opengl window
|
||||
* @param win_height height of our opengl window
|
||||
@@ -44,3 +47,5 @@ bool sg_glDumpWindow( const char *filename, int win_width, int win_height );
|
||||
*/
|
||||
bool sg_glWritePPMFile( const char *filename, GLubyte *buffer, int win_width,
|
||||
int win_height, int mode);
|
||||
|
||||
#endif // of SG_SCREEN_DUMP_HXX
|
||||
|
||||
Reference in New Issue
Block a user