00001 /* $Id: Architecture.h,v 1.3 2002/12/05 15:05:47 cvs Exp $ */ 00002 00003 #ifndef __ARCHITECTURE_ABSTRACT_FACTORY_H 00004 #define __ARCHITECTURE_ABSTRACT_FACTORY_H 00005 00006 #include <gra/GRAObject.h> 00007 #include <gra/render/Render.h> 00008 #include <gra/reflection/ReflectionModel.h> 00009 #include <gra/reflection/LocalReflection.h> 00010 #include <gra/shader/Shader.h> 00011 #include <gra/camera/Camera.h> 00012 00013 using namespace esg; 00014 00015 namespace gra { 00016 00022 class GRA_EXPORT Architecture : public GRAObject { 00023 protected: 00024 int * _pStopFlag; 00025 DiffuseBRDF * _pDefaultDiffuseBRDF; 00026 SpecularBRDF * _pDefaultSpecularBRDF; 00027 00028 public: 00029 struct Params { 00030 int * stopFlag; 00031 DiffuseBRDF * diffBRDF; 00032 SpecularBRDF * specBRDF; 00033 00034 Params() : stopFlag(NULL), diffBRDF(NULL), specBRDF(NULL) {} 00035 }; 00036 00037 public: 00043 Architecture (Params& params) { 00044 _pStopFlag = params.stopFlag; 00045 _pDefaultDiffuseBRDF = params.diffBRDF; 00046 _pDefaultSpecularBRDF = params.specBRDF; 00047 } 00048 00052 virtual ~Architecture () {} 00053 00057 virtual Render* createRender (void) = 0; 00058 00062 virtual Shader* createShader (void) = 0; 00063 }; 00064 00065 } // namespace 00066 00067 #endif // __ARCHITECTURE_ABSTRACT_FACTORY_H