OpenWalnut  1.5.0dev
WGEOffscreenFinalPass.cpp
1 //---------------------------------------------------------------------------
2 //
3 // Project: OpenWalnut ( http://www.openwalnut.org )
4 //
5 // Copyright 2009 OpenWalnut Community, BSV@Uni-Leipzig and CNCF@MPI-CBS
6 // For more information see http://www.openwalnut.org/copying
7 //
8 // This file is part of OpenWalnut.
9 //
10 // OpenWalnut is free software: you can redistribute it and/or modify
11 // it under the terms of the GNU Lesser General Public License as published by
12 // the Free Software Foundation, either version 3 of the License, or
13 // (at your option) any later version.
14 //
15 // OpenWalnut is distributed in the hope that it will be useful,
16 // but WITHOUT ANY WARRANTY; without even the implied warranty of
17 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
18 // GNU Lesser General Public License for more details.
19 //
20 // You should have received a copy of the GNU Lesser General Public License
21 // along with OpenWalnut. If not, see <http://www.gnu.org/licenses/>.
22 //
23 //---------------------------------------------------------------------------
24 
25 #include <string>
26 
27 #include "../WGETextureHud.h"
28 
29 #include "WGEOffscreenFinalPass.h"
30 
31 WGEOffscreenFinalPass::WGEOffscreenFinalPass( size_t textureWidth, size_t textureHeight, int num ):
32  WGEOffscreenTexturePass( textureWidth, textureHeight, num )
33 {
34  // initialize members
35  setRenderTargetImplementation( WGECamera::FRAME_BUFFER );
36  setRenderOrder( WGECamera::NESTED_RENDER, 0 );
37 
38  // render before the hud
39  if( m_hud )
40  {
41  getOrCreateStateSet()->setRenderBinDetails( m_hud->getRenderBin() - 1, "RenderBin" );
42  }
43  else
44  {
45  getOrCreateStateSet()->setRenderBinDetails( 10000, "RenderBin" );
46  }
47 
48  osg::StateSet* state = this->getOrCreateStateSet();
49  state->setMode( GL_DEPTH_TEST, osg::StateAttribute::ON );
50 
51  // allow the user to use blending
52  getOrCreateStateSet()->setMode( GL_BLEND, osg::StateAttribute::ON );
53 }
54 
55 WGEOffscreenFinalPass::WGEOffscreenFinalPass( size_t textureWidth, size_t textureHeight, osg::ref_ptr< WGETextureHud > hud, std::string name,
56  int num ):
57  WGEOffscreenTexturePass( textureWidth, textureHeight, hud, name, num )
58 {
59  // initialize members
60  setRenderTargetImplementation( WGECamera::FRAME_BUFFER );
61  setRenderOrder( WGECamera::NESTED_RENDER, 0 );
62 
63  // render before the hud
64  if( m_hud )
65  {
66  getOrCreateStateSet()->setRenderBinDetails( m_hud->getRenderBin() - 1, "RenderBin" );
67  }
68  else
69  {
70  getOrCreateStateSet()->setRenderBinDetails( 10000, "RenderBin" );
71  }
72 
73  osg::StateSet* state = this->getOrCreateStateSet();
74  state->setMode( GL_DEPTH_TEST, osg::StateAttribute::ON );
75 
76  // allow the user to use blending
77  getOrCreateStateSet()->setMode( GL_BLEND, osg::StateAttribute::ON );
78 }
79 
81 {
82  // cleanup
83 }
84 
virtual ~WGEOffscreenFinalPass()
Destructor.
WGEOffscreenFinalPass(size_t textureWidth, size_t textureHeight, int num=0)
Creates a new rendering pass instance which actually renders on a full-screen quad.
osg::ref_ptr< WGETextureHud > m_hud
Gets notified about any added and removed attachment.
This class encapsulates an OSG Camera and a corresponding framebuffer object.