static inline void DrawShadows(void)
{
float Angle = getLightCenter(); float vAngle = getLightCenterV(); const float Near = getLightNear(); const float Far = getLightFar(); float LightAngle = tan(getLightFrustrumAngle() * (float(M_PI)) / 90.0f);
glDisable(GL_TEXTURE_2D);
glMatrixMode (GL_PROJECTION);
{
glPushMatrix();
glLoadIdentity();
glFrustum (-LightAngle * Near, LightAngle * Near, -LightAngle * Near, LightAngle * Near, Near, Far);
}
glMatrixMode (GL_MODELVIEW);
glPushMatrix();
glLoadIdentity();
glRotatef(vAngle, 1.0f, 0.0f, 0.0f);
glTranslatef(0.0f, 0.0f, light_distance);
glRotatef(Angle, 0.0f, 1.0f, 0.0f);
glGetFloatv(GL_PROJECTION_MATRIX, *LightPMatrix);
glGetFloatv(GL_MODELVIEW_MATRIX, *LightMVMatrix);
GL_CHECK_ERROR();
SetupFramebufferObject(FBO_ShadowMap, 0, 0, ShadowMap);
GL_CHECK_ERROR();
glClear (GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
GL_CHECK_ERROR();
glPushMatrix();
TransformObject();
glColor3f(1.0f, 0.0f, 0.0f);
DrawObject();
glPopMatrix();
GL_CHECK_ERROR();
glColor3f(0.0f, 0.0f, 1.0f);
if (displayGround) DrawGroundPlane();
GL_CHECK_ERROR();
ClearFramebufferObject(false);
glMatrixMode (GL_PROJECTION);
{
glPopMatrix();
}
glMatrixMode (GL_MODELVIEW);
glPopMatrix();
glEnable(GL_TEXTURE_2D);
}