Archon::Raytracer Namespace Reference

The implementation of a raytracer. More...


Classes

class  WindowQuitHandler
struct  View
class  Engine
class  Light
struct  Logger
class  Object
class  Solid
class  Plane
class  Cylinder
class  Sphere
class  Torus
 A torus. More...
class  Polygon
 A convex polygon. More...
class  ConvexPolyhedron
struct  ViewState
class  SceneLoader
class  Surface
class  StandardSurface
class  Texture
struct  Photon
class  World

Functions

void flush (Window *window, vector< Vector4 > &pixels, unsigned &frameX, unsigned &frameY)
bool exceptionCatchInfo (Utilities::Exception::Formatter format, string &result)
 Extract information from the last thrown exception.
int main (int argc, const char *argv[])
void handle_unexpected ()
bool leastPositiveDist (double t1, double t2, double &dist)
void drawDepthMarker (double depth)
void viewScene (X3D::Scene *scene, string viewPointName, View *view, const Vector4 &backgroundColor, int xResolution, int yResolution, bool fullScreen, bool showLightSources, bool headLight, int subdivisionX, int subdivisionY, int frameRate, Logger *logger)
void viewScene (X3D::Scene *, std::string viewPointName, View *, const Vector4 &backgroundColor, int xResolution, int yResolution, bool fullScreen, bool showLightSources, bool headLight, int subdivisionX, int subdivisionY, int frameRate, Logger *)
void get_scene (Ref< const Scene > scene, Ref< const Material > defaultMaterial, World *world, vector< View > *views, vector< pair< Vector3, const LightNode * > > *lights, Logger *logger)
void get_scene (Ref< const X3D::Scene >, Ref< const X3D::Material > defaultMaterial, World *, vector< View > *views, vector< pair< Vector3, const X3D::LightNode * > > *, Logger *)
int modulo (int x, int y)

Variables

Archon::Raytracer::Logger logger
bool opt_help = false
bool opt_displayRendering = false
Options::IntByInt opt_resolution = { 1000, 1000 }
Vector3 opt_eyepoint = Vector3(0, 0, 10)
Vector3 opt_lookat = Vector3(0, 0, 0)
double opt_fieldOfView = 0.785398
bool opt_generatePhotonMap = false
bool opt_showOnlyPhotonMap = false
int opt_causticPhotons = 1000000
int opt_photonsInEstimate = 300
bool opt_preview = false
bool opt_previewOnly = false
string opt_outputFileName = ""
bool opt_fullScreen = false
Options::IntByInt opt_previewResolution = { 1000, 1000 }
ColorRGBA opt_backgroundColor = ColorRGBA(Color::black, 0)
bool opt_showLightSources = false
bool opt_headLight = true
int opt_maxLoaderThreads = 8
int opt_maxLoaderThreadIdle = 10
int opt_frameRate = 40
Options::IntByInt opt_subdivision = { 25, 25 }


Detailed Description

The implementation of a raytracer.

Function Documentation

bool Archon::Raytracer::exceptionCatchInfo Utilities::Exception::Formatter  format,
string &  result
[inline]
 

Extract information from the last thrown exception.

It re-throws the last thrown exception, and then attepts to catch any of the exception types known to this library. If this succeeds then the specified formatter is used to produce 'result' and true is returned. If the exception is unknown to this library then it just returns false.

This method is intended to be incorporated into similar methods in other libraries that interact with this library or in applications that need to check various different libraries for exceptions known to them.

Example:

   namespace MyApp
   {
     bool exceptionCatchInfo(Archon::Utilities::Exception::Formatter format,
                             string &result)
     {
       try { throw; }
       catch(MyFooException &e)
       {
         result = (*format)(typeid(e), "", e.getMessage())
"; } catch(MyBarException &e) { result = (*format)(typeid(e), e.getLocation(), "")
"; } catch(...) { return Archon::Utilities::exceptionCatchInfo(formatter, result) || SomeCoolLib::exceptionCatchInfo(formatter, result) || SomeShitLib::exceptionCatchInfo(formatter, result); } return true; } }

   int main(int argc, const char *argv[]) throw()
   {
     set_unexpected(Exception::terminal<MyApp::exceptionCatchInfo>);
     set_terminate(Exception::terminal<MyApp::exceptionCatchInfo>);
     ...
   }

 

Note:
If all your exceptions are derived from Archon::Utilities::Exception, then you do not need to write your own catchInfo function since Archon::Utilities::exceptionCatchInfo will know about it. If, on the other hand, you add new data to an exception derived from Utilities::Exception, and this data is not available through getMessage, you will need to provide your own exceptionCatchInfo to extract this data.
See also:
Exception::terminal

Definition at line 36 of file exception.H.

References Archon::Utilities::exceptionCatchInfo().


Generated on Sun Jul 30 22:56:57 2006 for Archon by  doxygen 1.4.4