examples/eqNBody/channel.h
00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018 #ifndef EQNBODY_CHANNEL_H
00019 #define EQNBODY_CHANNEL_H
00020
00021 #include <eq/eq.h>
00022
00023 #include "configEvent.h"
00024 #include "controller.h"
00025 #include "dataProxy.h"
00026 #include "frameData.h"
00027
00028 namespace eqNbody
00029 {
00030 class FrameData;
00031 class InitData;
00032
00033 class Channel : public eq::Channel
00034 {
00035 public:
00036 Channel( eq::Window* parent ) : eq::Channel( parent ) {}
00037
00038 protected:
00039 virtual ~Channel() {}
00040
00041 virtual void frameClear( const uint32_t frameID );
00042 virtual void frameDraw( const uint32_t frameID );
00043
00044 private:
00045 void _compute(const uint32_t frameID, const FrameData& fd);
00046 void _draw(const uint32_t frameID, const FrameData& fd);
00047 void _update();
00048
00049 void _initLocalProxy();
00050 void _initCUDAController();
00051
00052 void _initDataProxies(const FrameData& frameData);
00053 void _syncDataProxies(const FrameData& frameData);
00054 void _sendEvent(ConfigEvent::Type type, unsigned int version, unsigned int pid, const eq::Range& range);
00055
00056 Controller _controller;
00057 DataProxy _dataProxy[MAX_NGPUS];
00058 unsigned int _offset;
00059 };
00060 }
00061
00062
00063
00064 #endif // EQ_PLY_CHANNEL_H
00065