libcrbn/rendering/cache.hpp

00001 
00002 #ifndef __rendering_cache_hpp__
00003 #define __rendering_cache_hpp__
00004 
00005 #include <crbn/basic/ray.hpp>
00006 #include <crbn/basic/vec3.hpp>
00007 
00008 typedef struct _cache_entry {
00009   uint x, y;
00010   uint size;
00011   vec2* uvs;
00012   ray* rays;
00013   vec3 color;
00014 } cache_entry;
00015 
00016 class RenderingCache
00017 {
00018 public:
00019   RenderingCache( int size, int samples ) : _size( size ), _samples( samples ) {
00020     _entries = new cache_entry [ size ];
00021     for( int i = 0; i < size; ++i ) {
00022       _entries[ i ].size = samples;
00023       _entries[ i ].uvs = new vec2 [ samples ];
00024       _entries[ i ].rays = new ray [ samples ];
00025     }
00026   }
00027   ~RenderingCache() {
00028     for( int i = 0; i < _size; ++i ) {
00029       delete [] _entries[ i ].rays;
00030       _entries[ i ].rays = 0;
00031       delete [] _entries[ i ].uvs;
00032       _entries[ i ].uvs = 0;
00033     }
00034     delete [] _entries;
00035     _entries = 0;
00036   }
00037 
00038   int samples() { return _samples; }
00039 
00040   cache_entry* get_entry( int i ) {
00041     return &(_entries[ i ]);
00042   }
00043 private:
00044   int _size, _samples;
00045   cache_entry* _entries;
00046 };
00047 
00048 #endif // __rendering_cache_hpp__

Generated on Tue Nov 14 15:40:08 2006 for libcrbn by  doxygen 1.5.0