Credits.cpp
上传用户:sz83729876
上传日期:2013-03-07
资源大小:4140k
文件大小:3k
源码类别:

OpenGL

开发平台:

Windows_Unix

  1. #include "Credits.h"
  2. CCreditsScene::CCreditsScene()
  3. {
  4.     m_fFades[ FADEIN ].m_bOn = true;
  5.     m_fFades[ FADEIN ].m_fTime = 2.5f;
  6.     m_fFades[ FADEIN ].m_fColorR = 0.0;
  7.     m_fFades[ FADEIN ].m_fColorG = 0.0;
  8.     m_fFades[ FADEIN ].m_fColorB = 0.0;
  9.     m_fFades[ FADEOUT ].m_bOn = true; 
  10.     m_fFades[ FADEOUT ].m_fTime = 7.0f;
  11.     m_fFades[ FADEOUT ].m_fColorR = 0.0;
  12.     m_fFades[ FADEOUT ].m_fColorG = 0.0;
  13.     m_fFades[ FADEOUT ].m_fColorB = 0.0;
  14.     m_fLength = 15.0f;
  15.     SetSceneName( "Credits Scene" );
  16. }
  17. bool CCreditsScene::Initialize()
  18. {
  19.     Texture* tex = Texture::GetInstance();
  20.    
  21.     m_texText = tex->LoadTexture( "credits.jpg" );
  22.     if (m_texText==0xffff)
  23.         return false;
  24.     
  25.     /*m_pSprocket = new CObject();
  26.     if (!m_pSprocket->LoadFrom3DS( "data\sprocket.3ds" ))
  27.         return false;*/
  28.     m_pSphere = new CObject();
  29.     if (!m_pSphere->LoadFrom3DS( "data\sphere.3ds" ))
  30.         return false;
  31.     //*** create lights
  32.     m_vLights.clear();
  33.     CLight light2;
  34.     light2.m_rgbAmbient.Set( 0.0, 0.0, 0.0 );
  35.     light2.m_rgbDiffuse.Set( 1.0, 0.5, 0.5 );
  36.     light2.m_vPosition.Set( 0, 0, 150 );
  37.     light2.Create( GL_LIGHT1 );
  38.     m_vLights.push_back( light2 );
  39.     CLight light1;
  40.     light1.m_rgbAmbient.Set( 0.0, 0.0, 0.0 );
  41.     light1.m_rgbDiffuse.Set( 0.2, 0.2, 0.75 );
  42.     light1.m_vPosition.Set( 0, 50, 50 );
  43.     light1.Create( GL_LIGHT2 );
  44.     m_vLights.push_back( light1 );
  45.     return true;
  46. }
  47. bool CCreditsScene::Cleanup()
  48. {
  49.     /*if (m_pSprocket)
  50.         delete m_pSprocket;*/
  51.     if (m_pSphere)
  52.         delete m_pSphere;
  53.     return true;
  54. }
  55. bool CCreditsScene::Update()
  56. {
  57.     m_vLights[0].Create();
  58.     m_vLights[1].Create();
  59.     return true;
  60. }
  61. bool CCreditsScene::Render( int iScreenWidth, int iScreenHeight )
  62. {
  63.     OpenGL* ogl = OpenGL::GetInstance();
  64.     ogl->SetFOV( 150.0f );
  65.     gluLookAt( 0, 0, 0,
  66.                0, 0, -10,
  67.                0, 1, 0 );
  68.     float fTime = Timer::GetTimer( TIMER_SINCEAPPSTART ) * 15.0f;
  69.     glDisable( GL_DEPTH_TEST );
  70.     glColor3f( 0.5, 0.5, 0.5 );
  71.     glPushMatrix();
  72.         glRotatef( fTime, 0, 1, 0 );
  73.         glRotatef( fTime*1.4f, 1, 0, 0.33f );
  74.         m_pSphere->Render();
  75.     glPopMatrix();
  76.     glEnable( GL_BLEND );
  77.     glBlendFunc( GL_SRC_COLOR, GL_ONE );
  78.     glColor3f( 1, 1, 1 );
  79.     glPushMatrix();
  80.         glRotatef( fTime, 0.4, 0, 1 );
  81.         glRotatef( fTime*1.4f, 0, 1, 0.33f );
  82.         m_pSphere->Render();
  83.     glPopMatrix();
  84.     glEnable( GL_DEPTH_TEST );
  85.     ogl->SetFOV( 45.0f );
  86.     gluLookAt( 0, 0, 50,
  87.                0, 0, 0,
  88.                0, 1, 0 );
  89.     glColor3f( 1, 1, 1 );
  90.     glEnable( GL_TEXTURE_2D );
  91.     glBindTexture( GL_TEXTURE_2D, m_texText );
  92.     glBegin( GL_QUADS );
  93.         glTexCoord2f( 0, 0 ); glVertex3f( -10, 10, 0 );
  94.         glTexCoord2f( 0, 1 ); glVertex3f( -10,-10, 0 );
  95.         glTexCoord2f( 1, 1 ); glVertex3f(  10,-10, 0 );
  96.         glTexCoord2f( 1, 0 ); glVertex3f(  10, 10, 0 );
  97.     glEnd();
  98.     glDisable( GL_BLEND );
  99.     /*glEnable( GL_LIGHTING );
  100.     glDisable( GL_COLOR_MATERIAL );
  101.     glPushMatrix();
  102.         glRotatef( y, 0, 1, 0 );
  103.         m_pSprocket->Render();
  104.     glPopMatrix();
  105.     glDisable( GL_LIGHTING );
  106.     glEnable( GL_COLOR_MATERIAL );*/
  107.   
  108.     return true;
  109. }