source: GTP/trunk/App/Demos/Illum/Ogre/src/GameToolsToneMapDemo/include/GameToolsToneMapDemo.h @ 1683

Revision 1683, 4.2 KB checked in by szirmay, 18 years ago (diff)
Line 
1/*
2-----------------------------------------------------------------------------
3This source file is part of OGRE
4    (Object-oriented Graphics Rendering Engine)
5For the latest info, see http://www.ogre3d.org/
6
7Copyright (c) 2000-2005 The OGRE Team
8Also see acknowledgements in Readme.html
9
10You may use this sample code for anything you like, it is not covered by the
11LGPL like the rest of the engine.
12-----------------------------------------------------------------------------
13*/
14
15/**
16    \file
17        Lighting.h
18    \brief
19        Shows lighting support in OGRE. Also demonstrates the use of billboards
20        and controllers for automatic time-relative behaviour.
21*/
22
23
24#include "ExampleApplication.h"
25#include "OgreIlluminationManager.h"
26#include "SpriteParticleRenderer.h"
27
28
29// Listener class for frame updates
30class ParticleDemoFrameListener : public ExampleFrameListener
31{
32protected:
33       
34        unsigned long framecount;
35       
36public:
37    ParticleDemoFrameListener(RenderWindow* window, Camera* maincam)
38        :ExampleFrameListener(window, maincam)
39                                 
40    {
41                framecount = 0;         
42    }
43
44    bool frameStarted(const FrameEvent& evt)
45    {           
46                bool result = ExampleFrameListener::frameStarted(evt);
47       framecount++;
48        return result;     
49    }
50
51       
52
53};
54
55/** Application class */
56class ParticleDemoApplication : public ExampleApplication
57{
58
59public:
60
61protected:
62        SceneNode* kupolaNode;
63        SceneNode* mainLightNode;
64
65
66        void createPostproc()
67        {
68               
69                CompositorManager::getSingleton().addCompositor(mWindow->getViewport(0),
70                                                                                                                "GameTools/Glow");
71                CompositorManager::getSingleton().setCompositorEnabled(mWindow->getViewport(0),
72                                                                                                                "GameTools/Glow", true);
73
74                CompositorManager::getSingleton().addCompositor(mWindow->getViewport(0),
75                                                                                                                "GameTools/ToneMap");
76                CompositorManager::getSingleton().setCompositorEnabled(mWindow->getViewport(0),
77                                                                                                                "GameTools/ToneMap", true);             
78
79               
80               
81        }
82   
83
84        void createScene(void)
85    {
86                createPostproc();
87
88                OgreIlluminationManager::getSingleton().setMainCamera(mCamera);
89                OgreIlluminationManager::getSingleton().setMainViewport(mWindow->getViewport(0));
90                               
91                Root::getSingleton()._setCurrentSceneManager(mSceneMgr);
92                mCamera->setPosition(0,100,240);
93                mCamera->setFOVy(Radian(Degree(80)));
94                //mCamera->setFarClipDistance(1000);
95                // Set ambient light
96        mSceneMgr->setAmbientLight(ColourValue(0.2, 0.2, 0.2));
97
98                // Skybox
99        mSceneMgr->setSkyBox(true, "Examples/MorningSkyBox");
100                SceneNode* rootNode = mSceneMgr->getRootSceneNode();   
101                       
102     
103                //init objects
104                Entity* kupola = mSceneMgr->createEntity("kupola", "kupola.mesh");
105                kupola->getSubEntity(0)->setMaterialName("kupolafal_low");
106                kupola->getSubEntity(1)->setMaterialName("kupolatalaj_low");
107                Entity* head = mSceneMgr->createEntity("head", "ogrehead.mesh");
108                               
109                //init nodes
110                kupolaNode = rootNode->createChildSceneNode( "kupola" );
111                kupolaNode->rotate(Vector3(0,1,0),Radian(Degree(90)));
112                kupolaNode->attachObject( kupola );
113                kupolaNode->scale(25,21,25);           
114                kupolaNode->_updateBounds();
115                MeshPtr kmesh = kupola->getMesh();
116                kmesh->buildTangentVectors(0,1);
117               
118                SceneNode* headNode = rootNode->createChildSceneNode("head");
119                headNode->attachObject(head);
120                headNode->setScale(2,2,2);
121                AxisAlignedBox bbox = head->getBoundingBox();
122                headNode->setPosition(0, 100,0);               
123                headNode->_updateBounds();
124
125               
126
127                //Init lights
128        /*      Light* mainLight = mSceneMgr->createLight("MainLight");
129                mainLight->setType(Light::LT_POINT);
130                mainLight->setDiffuseColour(ColourValue(0.9,0.9,0.9,1));
131                mainLight->setSpecularColour(ColourValue(0.9, 0.9,0.9,1));
132                mainLight->setAttenuation(400, 1.0, 1, 1);
133                mainLightNode = rootNode->createChildSceneNode();
134                mainLightNode->setPosition(0,150,0);
135                mainLight->setPosition(mainLightNode->getWorldPosition());
136                mainLightNode->attachObject(mainLight);         */
137       
138               
139   }
140
141        void createFrameListener(void)
142    {
143                // This is where we instantiate our own frame listener
144                mFrameListener= new ParticleDemoFrameListener(mWindow,
145                                                                                        mCamera );
146    mRoot->addFrameListener(mFrameListener);
147        mRoot->addFrameListener(&OgreIlluminationManager::getSingleton());
148   }
149
150};
151
Note: See TracBrowser for help on using the repository browser.