include/CBaseFilter.h

00001 #ifndef _CBASEFILTER_
00002 #define _CBASEFILTER_
00003 
00004 #include <irrlicht.h>
00005 #include <ShaderCallback.h>
00006 
00007 namespace sonus
00008 {
00009         using namespace irr;
00010 
00011         class CBaseFilter : public scene::ISceneNode
00012         {
00013 
00014                 core::aabbox3d<f32> Box;
00015                 video::S3DVertex Vertices[6];
00016 
00017         public:
00018                 video::SMaterial Material;
00019                 c8* vsFileName; // filename for the vertex shader
00020                 c8* psFileName; // filename for the pixel shader
00021 
00022                 int newMaterialType1;
00023                 ShaderCallback* mc;
00024 
00025                 video::ITexture* rt0;
00026                 int alto;
00027                 int ancho;
00028 
00029         public:
00030 
00031                 CBaseFilter(scene::ISceneNode* parent, scene::ISceneManager* mgr, s32 id)
00032                         : scene::ISceneNode(parent, mgr, id)
00033                 {
00034                         Material.Wireframe = false;
00035                         Material.Lighting = false;
00036                         Material.BackfaceCulling = true;
00037 
00038                         Vertices[0] = video::S3DVertex(-10.0f, -10.0f, 0.0f,1,1,0, video::SColor(255,0,0,255), 0.0f, 1.0f);
00039                         Vertices[1] = video::S3DVertex(-10.0f,  10.0f, 0.0f,1,1,0, video::SColor(255,0,0,255), 0.0f, 0.0f);
00040                         Vertices[2] = video::S3DVertex( 10.0f,  10.0f, 0.0f,1,1,0, video::SColor(255,0,0,255), 1.0f, 0.0f);
00041                         Vertices[3] = video::S3DVertex( 10.0f, -10.0f, 0.0f,1,1,0, video::SColor(255,0,0,255), 1.0f, 1.0f);
00042                         Vertices[4] = video::S3DVertex(-10.0f, -10.0f, 0.0f,1,1,0, video::SColor(255,0,0,255), 0.0f, 1.0f);
00043                         Vertices[5] = video::S3DVertex( 10.0f,  10.0f, 0.0f,1,1,0, video::SColor(255,0,0,255), 1.0f, 0.0f);
00044 
00045                         Box.reset(Vertices[0].Pos);
00046                         for (s32 i=1; i<4; ++i)
00047                                 Box.addInternalPoint(Vertices[i].Pos);
00048 
00049                         mc = new ShaderCallback();
00050 
00051                         video::IVideoDriver* driver = SceneManager->getVideoDriver();
00052                         rt0 = driver->createRenderTargetTexture(core::dimension2d<s32>(640,480));
00053                         setMaterialTexture(0, rt0);
00054                 }
00055 
00056 
00057                 virtual void OnPreRender()
00058                 {
00059                         if (IsVisible)
00060                                 SceneManager->registerNodeForRendering(this);
00061                 }
00062 
00063 
00064                 virtual void render()
00065                 {
00066                         u16 indices[] = {0,1,2,3,4,5};
00067                         video::IVideoDriver* driver = SceneManager->getVideoDriver();
00068 
00069                         driver->setMaterial(Material);
00070                         driver->setTransform(video::ETS_WORLD, AbsoluteTransformation);
00071                         driver->drawIndexedTriangleList(&Vertices[0], 6, &indices[0], 2);
00072                 }
00073 
00074 
00075                 virtual const core::aabbox3d<f32>& getBoundingBox() const
00076                 {
00077                         return Box;
00078                 }
00079 
00080                 /*virtual s32 getMaterialCount()
00081                 {
00082                         return 1;
00083                 }*/
00084 
00085                 virtual video::SMaterial& getMaterial(s32 i)
00086                 {
00087                         return Material;
00088                 } 
00089         };
00090 
00091 }
00092 
00093 #endif

Generated on Tue Aug 26 12:26:54 2008 for sonus by  doxygen 1.5.4