rendered paste body/*-----------------------------------------------------------------*/// Author: Darryl Davis// File: RenderLight.cpp// Date: 8/18/06// Last Update: 8/21/06// Purpose: RenderLight inherits from RenderObject and is used// to display an OpenGL light in the scene./*-----------------------------------------------------------------*/#include "RenderLight.h"#include "RenderPrimitive.h"/*-----------------------------------------------------------------*/// Name: initialize()// Date: 8/24/06// In: // Purpose: Initialize the light, do this once./*-----------------------------------------------------------------*/void CRenderLight::initialize(void){ glEnable(GL_LIGHTING); glEnable(GL_LIGHT0); m_fPosition[0] = 0.0f; m_fPosition[1] = 0.0f; m_fPosition[2] = 20.0f; m_fPosition[3] = 1.0f; // Turn Off *global ambient* light - cbr GLfloat noLight[] = { 0.0f, 0.0f, 0.0f }; GLfloat someLight[] = { 0.4f, 0.4f, 0.4f }; GLfloat diffuseLight[] = { 0.1f, 0.1f, 0.1f, 0.1f }; //GLfloat lightPos[] = { 100.0f, 0.0f, -100.0f }; GLfloat gray[] = { 0.5f, 0.5f, 0.5f }; glLightModelfv(GL_LIGHT_MODEL_AMBIENT, noLight); GLfloat spotDir[] = { 0.0f, 0.0f, -1.0f }; glLightfv(GL_LIGHT0, GL_AMBIENT, noLight); glLightfv(GL_LIGHT0, GL_DIFFUSE, someLight);// glLightfv(GL_LIGHT0, GL_SPECULAR, someLight); glLightfv(GL_LIGHT0, GL_SPOT_DIRECTION, spotDir); glLightf(GL_LIGHT0, GL_SPOT_CUTOFF, 200.0f);// glLightfv(GL_LIGHT0, GL_POSITION, m_fPosition); glEnable(GL_COLOR_MATERIAL); glMaterialfv(GL_FRONT, GL_AMBIENT_AND_DIFFUSE, gray); glColorMaterial(GL_FRONT, GL_AMBIENT_AND_DIFFUSE);}/*--------------------------------------------------------*/// Name: render// Date: 8/24/06// Purpose: The Render function renders the light./*--------------------------------------------------------*/void CRenderLight::render(void){ static float m_fRotate = 0.0f; glDisable(GL_LIGHTING); glPushMatrix(); //m_fPosition[2] += 0.01f; //glRotatef(m_fRotate, 1.0f, 0.0f, 0.0f); glTranslatef( m_fPosition[0], m_fPosition[1], m_fPosition[2] ); glColor3f(1.0f, 1.0f, 1.0f); GLUquadric *pSphere = gluNewQuadric(); gluSphere(pSphere, 1.0f, 10, 10); gluDeleteQuadric(pSphere); glPopMatrix(); glEnable(GL_LIGHTING); glEnable(GL_LIGHT0); glLightfv(GL_LIGHT0, GL_POSITION, m_fPosition); // Draw a sphere! m_fRotate += 0.1f; }void CRenderLight::enable(){ }void CRenderLight::disable(){ glDisable(GL_LIGHT0);}