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;
00020 c8* psFileName;
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
00081
00082
00083
00084
00085 virtual video::SMaterial& getMaterial(s32 i)
00086 {
00087 return Material;
00088 }
00089 };
00090
00091 }
00092
00093 #endif