00001 #ifndef CybPFChannelC_H
00002 #define CybPFChannelC_H
00003
00004 #include "oaw/ctk/cybgraphicchannelc.h"
00005
00006 class pfChannel;
00007 class pfPipe;
00008 class pfScene;
00009
00010 class GLWndC;
00011
00012 class CybPFChannelC : public CybGraphicChannelC
00013 {
00014 public:
00015 CybPFChannelC(double vw, double vh, int buffer,GLWndC*,pfPipe*);
00016 void* operator new(size_t);
00017 void operator delete(void*,size_t);
00018
00019 GLWndC* GetGLWnd() const {return m_pGLWnd;}
00020
00021 virtual void SetViewplanePos(const VectorC&);
00022 virtual void SetViewplaneNorm(const VectorC&);
00023 virtual void SetProjectionpoint(const VectorC& v);
00024 virtual void SetViewplaneRol(double rol);
00025 virtual void SetScreenSize(double x, double y);
00026 virtual void SetFar(const double& f){m_far=f;}
00027 virtual void SetNear(const double& n){m_near=n;}
00028
00029
00030
00031
00032
00033
00034 virtual void ClearBuffers();
00035 virtual void Process(CybGroupC*, short);
00036 virtual void SetWorld(CybWorldC* pW);
00037
00038 pfChannel* GetPFChannel() const {return m_pChannel;}
00039
00040 protected:
00041 virtual void travDraw();
00042 virtual void travCull();
00043 virtual void travApp();
00044 private:
00045 void InitChannel();
00046 void UpdateFrustum();
00047 static void DrawFunc(pfChannel *chan, void *data);
00048 static void CullFunc(pfChannel *chan, void *data);
00049 static void AppFunc(pfChannel *chan, void *data);
00050
00051 protected:
00052 GLWndC* m_pGLWnd;
00053
00054 double m_dScale;
00055
00056 protected:
00057 pfChannel* m_pChannel;
00058 pfPipe* m_pPipe;
00059 int m_glBuffer;
00060
00061 };
00062
00063 #endif
00064
00065
00066
00067
00068
00069
00070
00071