From 728b8c930130c928cd48161604cef7a407884842 Mon Sep 17 00:00:00 2001 From: Robert Osfield Date: Sun, 9 Jan 2005 19:30:56 +0000 Subject: [PATCH] Added setImageReadFormat and setImageReadDataType methods to RenderToTextureStage to allow customization of what format/data type to read such as reading from the depth buffer etc. --- include/osgUtil/RenderToTextureStage | 8 ++++++++ src/osgUtil/RenderToTextureStage.cpp | 4 +++- 2 files changed, 11 insertions(+), 1 deletion(-) diff --git a/include/osgUtil/RenderToTextureStage b/include/osgUtil/RenderToTextureStage index afeb8a6c9..50bcd89f4 100644 --- a/include/osgUtil/RenderToTextureStage +++ b/include/osgUtil/RenderToTextureStage @@ -45,6 +45,12 @@ class OSGUTIL_EXPORT RenderToTextureStage : public RenderStage void setImage(osg::Image* image) { _image = image; } osg::Image* getImage() { return _image.get(); } + + void setImageReadPixelFormat(GLenum format) { _imageReadPixelFormat = format; } + GLenum getImageReadPixelFormat() const { return _imageReadPixelFormat; } + + void setImageReadPixelDataType(GLenum type) { _imageReadPixelDataType = type; } + GLenum getImageReadPixelDataType() const { return _imageReadPixelDataType; } virtual void draw(osg::State& state,RenderLeaf*& previous); @@ -57,6 +63,8 @@ class OSGUTIL_EXPORT RenderToTextureStage : public RenderStage osg::ref_ptr _texture; osg::ref_ptr _image; + GLenum _imageReadPixelFormat; + GLenum _imageReadPixelDataType; }; diff --git a/src/osgUtil/RenderToTextureStage.cpp b/src/osgUtil/RenderToTextureStage.cpp index 733307d02..d802a633d 100644 --- a/src/osgUtil/RenderToTextureStage.cpp +++ b/src/osgUtil/RenderToTextureStage.cpp @@ -20,6 +20,8 @@ using namespace osgUtil; RenderToTextureStage::RenderToTextureStage() { + _imageReadPixelFormat = GL_RGBA; + _imageReadPixelDataType = GL_UNSIGNED_BYTE; } RenderToTextureStage::~RenderToTextureStage() @@ -49,6 +51,6 @@ void RenderToTextureStage::draw(osg::State& state,RenderLeaf*& previous) } if (_image.valid()) - _image->readPixels(_viewport->x(),_viewport->y(),_viewport->width(),_viewport->height(),GL_RGBA,GL_UNSIGNED_BYTE); + _image->readPixels(_viewport->x(),_viewport->y(),_viewport->width(),_viewport->height(),_imageReadPixelFormat,_imageReadPixelDataType); }