About the global data, I know I shouldn''t have that, but all those variables will be replaced when I get to adding systems and managers so it''s just temporary. Well here''s the other code that could have anything to do with it:
This is everything in the main loop:
for (int i = 0; i < NUM_PARTICLES; i++) { g_pParticle->vRender(); } for (int j = 0; j < NUM_PARTICLES; j++) { if (!g_pParticle[j]->bUpdate(g_vForce)) { g_vVelocity->m_fX = float(rand() % 100) / 1000.0f - 0.05f; g_vVelocity->m_fY = float(rand() % 100) / 2000.0f + 0.01f; g_vVelocity->m_fZ = 0.0f; g_vPosition->m_fX = g_vSystemPos->m_fX; g_vPosition->m_fY = g_vSystemPos->m_fY; g_vPosition->m_fZ = g_vSystemPos->m_fZ; g_fColor[0] = float(rand() % 256) / 256.0f; g_fColor[1] = float(rand() % 256) / 256.0f; g_fColor[2] = float(rand() % 256) / 256.0f; g_fColor[3] = 1.0f; g_fFadeSpeed = float (rand() % 100) / 1000000.0f + 0.03f; if (!g_pParticle[j]->bInit(g_vPosition, g_vVelocity, g_fColor, g_fSize, g_fFadeSpeed)) return false; } }
Here are the functions:
void CParticle:: vRender(void){ glColor4f(m_fColor[0], m_fColor[1], m_fColor[2], m_fColor[3]); glBegin(GL_TRIANGLES); glTexCoord2i(0, 0); glVertex3f(m_vPosition->m_fX - m_fSize, m_vPosition->m_fY - m_fSize, m_vPosition->m_fZ); glTexCoord2i(1, 0); glVertex3f(m_vPosition->m_fX + m_fSize, m_vPosition->m_fY - m_fSize, m_vPosition->m_fZ); glTexCoord2i(1, 1); glVertex3f(m_vPosition->m_fX + m_fSize, m_vPosition->m_fY + m_fSize, m_vPosition->m_fZ); glTexCoord2i(0, 0); glVertex3f(m_vPosition->m_fX - m_fSize, m_vPosition->m_fY - m_fSize, m_vPosition->m_fZ); glTexCoord2i(1, 1); glVertex3f(m_vPosition->m_fX + m_fSize, m_vPosition->m_fY + m_fSize, m_vPosition->m_fZ); glTexCoord2i(0, 1); glVertex3f(m_vPosition->m_fX - m_fSize, m_vPosition->m_fY + m_fSize, m_vPosition->m_fZ); glEnd();}//--------------------------------------//--------------------------------------bool CParticle:: bUpdate(CVector* a_vForce){ m_vVelocity->m_fX += a_vForce->m_fX; m_vVelocity->m_fY += a_vForce->m_fY; m_vVelocity->m_fZ += a_vForce->m_fZ; m_vOldPosition = m_vPosition; m_vPosition->m_fX += m_vVelocity->m_fX; m_vPosition->m_fY += m_vVelocity->m_fY; m_vPosition->m_fZ += m_vVelocity->m_fZ; m_fLife -= m_fFadeSpeed; if (m_fLife <= 0.0f) return false; return true;}//--------------------------------------//--------------------------------------bool CParticle:: bInit(CVector* a_vPosition, CVector* a_vVelocity, float a_fColor[4], float a_fSize, float a_fFadeSpeed){ m_vVelocity = a_vVelocity; m_vOldPosition = a_vPosition; m_vPosition = a_vPosition; m_fColor[0] = a_fColor[0]; m_fColor[1] = a_fColor[1]; m_fColor[2] = a_fColor[2]; m_fColor[3] = a_fColor[3]; m_fLife = 1.0f; m_fSize = a_fSize; m_fFadeSpeed = a_fFadeSpeed; return true;}//--------------------------------------//-------------Constructor--------------//-------------------------------------- CParticle(void) { m_vPosition = NULL; m_vOldPosition = NULL; m_vVelocity = NULL; }
|
Panorama 3D Engine |
Contact me |
|
MSDN |
Google |
SourceForge |