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

Revision 2175, 4.8 KB checked in by szirmay, 17 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        void loadResources(void)
66        {
67                // Initialise, parse scripts etc
68                ResourceGroupManager::getSingleton().initialiseResourceGroup("Bootstrap");
69                ResourceGroupManager::getSingleton().initialiseResourceGroup("General");
70                ResourceGroupManager::getSingleton().initialiseResourceGroup("PostProc");
71        }
72
73        void chooseSceneManager()
74        {
75                mSceneMgr = mRoot->createSceneManager("OctreeSceneManager");
76                //mSceneMgr = mRoot->createSceneManager("OcclusionCullingSceneManager");
77        }
78
79        void createPostproc()
80        {               
81                CompositorManager::getSingleton().addCompositor(mWindow->getViewport(0),
82                                                                                                                "GTP/PostProc/Glow");
83                CompositorManager::getSingleton().setCompositorEnabled(mWindow->getViewport(0),
84                                                                                                                "GTP/PostProc/Glow", true);
85
86                CompositorManager::getSingleton().addCompositor(mWindow->getViewport(0),
87                                                                                                                "GTP/PostProc/ToneMap");
88                CompositorManager::getSingleton().setCompositorEnabled(mWindow->getViewport(0),
89                                                                                                                "GTP/PostProc/ToneMap", true);         
90        }
91   
92        void createScene(void)
93    {
94                createPostproc();
95
96                OgreIlluminationManager::getSingleton().setMainCamera(mCamera);
97                OgreIlluminationManager::getSingleton().setMainViewport(mWindow->getViewport(0));
98                               
99                Root::getSingleton()._setCurrentSceneManager(mSceneMgr);
100                mCamera->setPosition(0,100,240);
101                mCamera->setFOVy(Radian(Degree(80)));
102                //mCamera->setFarClipDistance(1000);
103                // Set ambient light
104        mSceneMgr->setAmbientLight(ColourValue(0.2, 0.2, 0.2));
105
106                // Skybox
107        mSceneMgr->setSkyBox(true, "Examples/MorningSkyBox");
108                SceneNode* rootNode = mSceneMgr->getRootSceneNode();
109
110                //init objects
111                Entity* kupola = mSceneMgr->createEntity("kupola", "kupola.mesh");
112                kupola->getSubEntity(0)->setMaterialName("kupolafal_low");
113                kupola->getSubEntity(1)->setMaterialName("kupolatalaj_low");
114                Entity* head = mSceneMgr->createEntity("head", "ogrehead.mesh");
115                               
116                //init nodes
117                kupolaNode = rootNode->createChildSceneNode( "kupola" );
118                kupolaNode->rotate(Vector3(0,1,0),Radian(Degree(90)));
119                kupolaNode->attachObject( kupola );
120                kupolaNode->scale(25,21,25);           
121                kupolaNode->_updateBounds();
122                MeshPtr kmesh = kupola->getMesh();
123                kmesh->buildTangentVectors(0,1);
124               
125                SceneNode* headNode = rootNode->createChildSceneNode("head");
126                headNode->attachObject(head);
127                headNode->setScale(2,2,2);
128                AxisAlignedBox bbox = head->getBoundingBox();
129                headNode->setPosition(0, 100,0);               
130                headNode->_updateBounds();
131
132               
133
134                //Init lights
135        /*      Light* mainLight = mSceneMgr->createLight("MainLight");
136                mainLight->setType(Light::LT_POINT);
137                mainLight->setDiffuseColour(ColourValue(0.9,0.9,0.9,1));
138                mainLight->setSpecularColour(ColourValue(0.9, 0.9,0.9,1));
139                mainLight->setAttenuation(400, 1.0, 1, 1);
140                mainLightNode = rootNode->createChildSceneNode();
141                mainLightNode->setPosition(0,150,0);
142                mainLight->setPosition(mainLightNode->getWorldPosition());
143                mainLightNode->attachObject(mainLight);         */
144       
145               
146   }
147
148        void createFrameListener(void)
149    {
150                // This is where we instantiate our own frame listener
151                mFrameListener= new ParticleDemoFrameListener(mWindow,
152                                                                                        mCamera );
153                mFrameListener->setPriority(1);
154        mRoot->addFrameListener(mFrameListener);
155        OgreIlluminationManager::getSingleton().setPriority(2);
156        mRoot->addFrameListener(&OgreIlluminationManager::getSingleton());
157   }
158
159};
160
Note: See TracBrowser for help on using the repository browser.