Main Page | Namespace List | Class Hierarchy | Alphabetical List | Data Structures | File List | Namespace Members | Data Fields | Globals

pge::GPUFire Class Reference

#include <GPUFire.h>

Inheritance diagram for pge::GPUFire:

Inheritance graph
[legend]
Collaboration diagram for pge::GPUFire:

Collaboration graph
[legend]

Public Member Functions

 GPUFire (Vector3f center, float size)
 Constructor.

virtual ~GPUFire (void)
 Destructor.

bool init (void)
void render (void)
 Called when the object should render itself.

void timer (unsigned int delay)
 Called when the timer event comes.


Private Attributes

GPUProgramm_program
Texturem_firecolor
Texturem_firemask
Texturem_noise
float m_time

Constructor & Destructor Documentation

pge::GPUFire::GPUFire Vector3f  center,
float  size
 

Constructor.

Definition at line 20 of file GPUFire.cpp.

References m_firecolor, m_firemask, m_noise, m_program, and m_time.

00020                                                     : Sprite(center, size) {
00021                 m_time = 0.0f;
00022 
00023                 m_firecolor = TextureDatabase::getInstance()->addTexture("firecolor.jpg");
00024                 m_firemask = TextureDatabase::getInstance()->addTexture("firemask.bmp");
00025                 m_noise = TextureDatabase::getInstance()->addTexture("firenoise.jpg");
00026 
00027                 m_program = new GPUProgram("../data/shader/fire_vs.txt", "../data/shader/fire_fs.txt");
00028         }

pge::GPUFire::~GPUFire void   )  [virtual]
 

Destructor.

Definition at line 36 of file GPUFire.cpp.

References m_program.

00036                               {
00037                 if(m_program != NULL) {
00038                         delete m_program;
00039                         m_program = NULL;
00040                 }
00041         }


Member Function Documentation

bool pge::GPUFire::init void   )  [virtual]
 

Reimplemented from pge::Sprite.

Definition at line 49 of file GPUFire.cpp.

00049                                {
00050                 return Sprite::init();
00051         }

void pge::GPUFire::render void   )  [virtual]
 

Called when the object should render itself.

Reimplemented from pge::Sprite.

Definition at line 59 of file GPUFire.cpp.

References pge::GPUProgram::bind(), pge::Texture::getDescriptor(), m_firecolor, m_firemask, m_noise, m_program, m_time, pge::GPUProgram::passUniform1f(), pge::GPUProgram::passUniform1i(), pge::GPUProgram::passUniform3f(), pge::GPUProgram::passUniform4f(), and pge::GPUProgram::release().

00059                                  {
00060                 // Fire color texture.
00061                 glActiveTexture(GL_TEXTURE0);
00062                 glEnable(GL_TEXTURE_2D);
00063                 glBindTexture(GL_TEXTURE_2D, m_firecolor->getDescriptor());
00064 
00065                 // Fire mask texture.
00066                 glActiveTexture(GL_TEXTURE1);
00067                 glEnable(GL_TEXTURE_2D);
00068                 glBindTexture(GL_TEXTURE_2D, m_firemask->getDescriptor());
00069 
00070                 // Fire noise texture.
00071                 glActiveTexture(GL_TEXTURE2);
00072                 glEnable(GL_TEXTURE_2D);
00073                 glBindTexture(GL_TEXTURE_2D, m_noise->getDescriptor());
00074 
00075                 m_program->bind();
00076 
00077                 m_program->passUniform1f("time", m_time);
00078                 m_program->passUniform3f("layerSpeed", Vector3f(0.1f, 0.1f, 0.1f));
00079                 m_program->passUniform4f("height", Vector4f(0.44f, 0.29f, 0.0f, 1.0f));
00080 
00081                 m_program->passUniform1f("distortion0", 0.09f);
00082                 m_program->passUniform1f("distortion1", 0.08f);
00083                 m_program->passUniform1f("distortion2", 0.1f);
00084 
00085                 m_program->passUniform1i("baseTex", 0);
00086                 m_program->passUniform1i("opacityTex", 1);
00087                 m_program->passUniform1i("distortionTex", 2);
00088 
00089                 //Renderer.pushMatrix();
00090                 renderer::setTextureAlphaBlendEnabled(true);
00091 
00092                 // Render sprite.
00093                 Sprite::render();
00094 
00095                 renderer::setTextureAlphaBlendEnabled(false);
00096                 //Renderer.popMatrix();
00097 
00098                 // Cleanup
00099                 m_program->release();
00100 
00101                 glActiveTexture(GL_TEXTURE1);
00102                 glDisable(GL_TEXTURE_2D);
00103 
00104                 glActiveTexture(GL_TEXTURE2);
00105                 glDisable(GL_TEXTURE_2D);
00106 
00107                 // Texture unit0 active as default.
00108                 glActiveTexture(GL_TEXTURE0);
00109         }

Here is the call graph for this function:

void pge::GPUFire::timer unsigned int  delay  )  [virtual]
 

Called when the timer event comes.

Reimplemented from pge::Sprite.

Definition at line 117 of file GPUFire.cpp.

References m_time.

00117                                               {
00118                 m_time += 0.1f;
00119 
00120                 // TODO: float max value
00121                 if (m_time >= 100000.0f - 1.0f) {
00122                         m_time = 0.0f;
00123                 }
00124         }


Field Documentation

Texture* pge::GPUFire::m_firecolor [private]
 

Definition at line 53 of file GPUFire.h.

Referenced by GPUFire(), and render().

Texture* pge::GPUFire::m_firemask [private]
 

Definition at line 54 of file GPUFire.h.

Referenced by GPUFire(), and render().

Texture* pge::GPUFire::m_noise [private]
 

Definition at line 55 of file GPUFire.h.

Referenced by GPUFire(), and render().

GPUProgram* pge::GPUFire::m_program [private]
 

Definition at line 52 of file GPUFire.h.

Referenced by GPUFire(), render(), and ~GPUFire().

float pge::GPUFire::m_time [private]
 

Definition at line 56 of file GPUFire.h.

Referenced by GPUFire(), render(), and timer().


The documentation for this class was generated from the following files:
Generated on Mon Oct 16 12:09:09 2006 for Phobosengine by doxygen 1.3.4