#include <GPUFire.h>
Inheritance diagram for pge::GPUFire:
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 | |
GPUProgram * | m_program |
Texture * | m_firecolor |
Texture * | m_firemask |
Texture * | m_noise |
float | m_time |
|
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 } |
|
Destructor.
Definition at line 36 of file GPUFire.cpp. References m_program.
|
|
Reimplemented from pge::Sprite. Definition at line 49 of file GPUFire.cpp.
00049 {
00050 return Sprite::init();
00051 }
|
|
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:
|
Called when the timer event comes.
Reimplemented from pge::Sprite. Definition at line 117 of file GPUFire.cpp. References m_time.
|
|
|
|
|
|
|
|
Definition at line 52 of file GPUFire.h. Referenced by GPUFire(), render(), and ~GPUFire(). |
|
|