communicator.h
Go to the documentation of this file.00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00033 #ifndef __communicator__header__
00034 #define __communicator__header__
00035
00036 #include "gpucalc/kernel.h"
00037
00038 #include "gpucalc/application.h"
00039 #include "gpucalc/log_manager.h"
00040
00041
00042 namespace gpucalc
00043 {
00044
00045 const char _CommunicatorClassName [] = "Communicator";
00046
00047 class _GpuCalcExport Communicator: public Object
00048 {
00049
00050
00051 OBJ_DISABLE_COPY(Communicator);
00052
00053
00054 public:
00055 Communicator(const std::string & CommunicatorName):
00056 mCurrentState(SNotReady),
00057 Object(_CommunicatorClassName, CommunicatorName),
00058 mPreviousKernel(0), mCurrentKernel(0), mRenderTarget(0),
00059 mTextureVector()
00060 {
00061 }
00062
00063
00064 ~Communicator()
00065 {
00066 }
00067
00068
00069 void setPreviousKernel(Kernel * PreviousKernel)
00070 {
00071 mPreviousKernel = 0;
00072 }
00073
00074
00075 void setCurrentKernel(Kernel * CurrentKernel)
00076 {
00077 if (mCurrentState & SHasKernel)
00078 {
00079 Except<ERR_DUPLICATE_ITEM>("Current Kernel has been already set.", "Communicator::setCurrentKernel", __FILE__, __LINE__);
00080 }
00081 else
00082 {
00083 mCurrentKernel = CurrentKernel;
00084 mCurrentState = mCurrentState & SHasKernel;
00085 }
00086 }
00087
00088
00089 void addStaticTexture(Texture * texture)
00090 {
00091
00092 }
00093
00094
00095 void setRenderTarget(Texture * RenderTarget)
00096 {
00097 if (mCurrentState & SHasRenderTarget)
00098 {
00099 Except<ERR_DUPLICATE_ITEM>("Current Kernel already has render target.", "Communicator::setRenderTarget", __FILE__, __LINE__);
00100 }
00101 else
00102 {
00103 mRenderTarget = RenderTarget;
00104 mCurrentState = mCurrentState & SHasRenderTarget;
00105 }
00106 }
00107
00108
00109 void compile()
00110 {
00111
00112 }
00113
00114
00115 void compute()
00116 {
00117
00118
00119
00120 }
00121
00122
00123 private:
00124
00125 unsigned int mCurrentState;
00126
00127 Kernel * mPreviousKernel;
00128 Kernel * mCurrentKernel;
00129
00130 Texture * mRenderTarget;
00131
00132 typedef std::list<Texture *> TextureVector;
00133 TextureVector mTextureVector;
00134 };
00135
00136 }
00137
00138 #endif
00139