Renderer Class Reference

#include <Renderer.h>

Inheritance diagram for Renderer:
Observer

List of all members.

Classes

struct  UniformUpdateElapsedTime
struct  UniformUpdateViewport

Public Member Functions

 Renderer (OSGCanvas *canvas, wxGraphicsWindow *graphicsWindow)
 ~Renderer ()
void renderScene ()
void notify (Observable *observable)
osgViewer::Viewer * getViewer ()
osg::Camera * getMasterCamera ()
osg::Camera * getActiveCamera ()
double getFramesPerSecond ()
ICameraManipulatorgetCameraManipulator ()
void setCameraManipulator (ICameraManipulator *cameraManipulator)
void resizeView ()
bool getNightVision ()
void setNightVision (bool status)

Protected Attributes

UniformUpdateElapsedTime _uniformUpdateElapsedTime
UniformUpdateViewport _uniformUpdateViewport
osg::ref_ptr< osg::Image > _noiseImage
osg::ref_ptr< osg::Texture2D > _noiseTexture
OSGCanvas_canvas
wxGraphicsWindow_graphicsWindow
ForwardPass_forwardPass
PostEffectPass_postEffectPass
ICameraManipulator_cameraManipulator
osg::ref_ptr< osg::Camera > _masterCamera
osgViewer::Viewer * _viewer
osg::ref_ptr< osg::Group > _nightVisionScene
double _framesPerSecond
double _elapsedTime
SceneManager_sceneManager
Terrain_terrain
bool _nightVision

Detailed Description

Razred Renderer predstavlja apstrakciju sustava za iscrtavanje. Sama implementacija parsiranja grafa scene, primjene odgovarajućih transformacija te konačnog prijenosa podataka za iscrtavanje je ostvarena ugrađenom OSG-ovom funkcionalnošću.

Međutim, postupak je proširen vlastitim shader programima. Na taj način, omogućeno je kvalitetno per-pixel osvjetljenje (klasičnim Blinn-Phong modelom), te dodatni efekti poput prozirnosti i highlight-a objekata.

Također, za implementaciju nightvision mode-a, potreban je dodatan postprocessing prolaz, koji obrađuje već iscrtanu sliku, primjenjujući odgovarajući filtar. Ovo je ostvareno proširivanjem početnog grafa scene dvijema dodatnim kamerama. Prva kamera iscrtava početni graf scene, i to u teksturu jednakih dimenzija kao prozor za iscrtavanje. Druga kamera iscrtava teksturirani pravokutnik preko cijelog ekrana. Naravno, tekstura tog pravokutnika je dobivena obradom teksture koju generira prva kamera, a što je sve implementirano shader programima.

Opisana proširenja su implementirana pomoćnim razredima ForwardPass i PostEffectPass, koji enkapsuliraju detalje kao što su generiranje i prijenos tekstura između prolaza, itd.


Constructor & Destructor Documentation

Renderer::Renderer ( OSGCanvas canvas,
wxGraphicsWindow graphicsWindow 
)
Renderer::~Renderer (  ) 

Member Function Documentation

osg::Camera * Renderer::getActiveCamera (  ) 
ICameraManipulator * Renderer::getCameraManipulator (  ) 
double Renderer::getFramesPerSecond (  ) 
osg::Camera * Renderer::getMasterCamera (  ) 
bool Renderer::getNightVision (  ) 
osgViewer::Viewer * Renderer::getViewer (  ) 
void Renderer::notify ( Observable observable  )  [virtual]

Implements Observer.

void Renderer::renderScene (  ) 
void Renderer::resizeView (  ) 
void Renderer::setCameraManipulator ( ICameraManipulator cameraManipulator  ) 
void Renderer::setNightVision ( bool  status  ) 

Member Data Documentation

double Renderer::_elapsedTime [protected]
double Renderer::_framesPerSecond [protected]
osg::ref_ptr<osg::Camera> Renderer::_masterCamera [protected]
bool Renderer::_nightVision [protected]
osg::ref_ptr<osg::Group> Renderer::_nightVisionScene [protected]
osg::ref_ptr<osg::Image> Renderer::_noiseImage [protected]
osg::ref_ptr<osg::Texture2D> Renderer::_noiseTexture [protected]
osgViewer::Viewer* Renderer::_viewer [protected]

The documentation for this class was generated from the following files:

Generated on Thu Jan 14 20:50:13 2010 for TerrainEditor by  doxygen 1.6.1