source: GTP/trunk/Lib/Illum/IllumModule/OgreIllumModule/src/RenderTechniques/OgreSBBRenderTechnique.cpp @ 874

Revision 874, 2.2 KB checked in by szirmay, 18 years ago (diff)
Line 
1#include "OgreSBBRenderTechnique.h"
2#include "OgreTechniqueGroup.h"
3#include "OgreIlluminationManager.h"
4
5
6OgreSBBRenderTechnique::OgreSBBRenderTechnique( unsigned char depthTexID,
7                                                                                                Pass* pass,
8                                                                                                OgreRenderable* parentRenderable,
9                                                                                                OgreTechniqueGroup* parentTechniqueGroup)
10                                                        :RenderTechnique( parentRenderable, parentTechniqueGroup),
11                                                        OgreRenderTechnique(pass, parentRenderable, parentTechniqueGroup),
12                                                        SBBRenderTechnique(parentRenderable, parentTechniqueGroup)
13{
14        this->depthTexID = depthTexID;
15        OgreIlluminationManager::getSingleton().createGlobalRun(ILLUMRUN_SCENE_CAMERA_DEPTH);
16       
17       
18        OgreSceneCameraDepthRenderingRun* run = (OgreSceneCameraDepthRenderingRun*)
19                OgreIlluminationManager::getSingleton().getGlobalRun(ILLUMRUN_SCENE_CAMERA_DEPTH)->asOgreRenderingRun();
20       
21        pass->getTextureUnitState(depthTexID)->setTextureName(run->getDepthTextureName());
22       
23}
24
25OgreSBBRenderTechnique::~OgreSBBRenderTechnique()
26{
27
28}
29
30void OgreSBBRenderTechnique::update(unsigned long frameNum)
31{
32        OgreIlluminationManager::getSingleton().updateGlobalRun(ILLUMRUN_SCENE_CAMERA_DEPTH, frameNum);
33}
34
35namespace SBBParsers
36{
37///Technique parsers
38        void parseDepthTexID(String& params, RenderTechniqueFactory* factory)
39        {
40                OgreSBBRenderTechniqueFactory* f = (OgreSBBRenderTechniqueFactory*) factory;
41                f->depthTexID =  StringConverter::parseUnsignedInt(params);
42        }
43}
44
45OgreSBBRenderTechniqueFactory::OgreSBBRenderTechniqueFactory()
46{
47        typeName = "SphericalBillboard";
48       
49        using namespace SBBParsers;
50       
51        //register parsers
52        this->attributeParsers.insert(AttribParserList::value_type("texture_unit_id", (ILLUM_ATTRIBUTE_PARSER) parseDepthTexID));
53}
54
55OgreRenderTechnique* OgreSBBRenderTechniqueFactory::createInstance(
56                                                                                IllumTechniqueParams* params,
57                                                                                Pass* pass,
58                                                                                OgreRenderable* parentRenderable,
59                                                                                OgreTechniqueGroup* parentTechniqueGroup)
60{       
61        //reset parameters
62        depthTexID = 1;
63       
64        parseParams(params);
65
66        OgreSBBRenderTechnique* result = new OgreSBBRenderTechnique(
67                                                                                                depthTexID,
68                                                                                                pass,
69                                                                                                parentRenderable,
70                                                                                                parentTechniqueGroup);
71        return result;
72}
73
74
75
Note: See TracBrowser for help on using the repository browser.