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

OpenGL

开发平台:

Windows_Unix

  1. #include "Demo.h"
  2. #include "Scene.h"
  3. #include "Sound.h" 
  4. // Scenes
  5. #include "intro_01.h"
  6. #include "intro_02.h"
  7. #include "cresent.h"
  8. #include "tube.h"
  9. #include "credits.h" 
  10. CApp::CApp()
  11. {
  12.     // why am i here ???
  13. }
  14. CApp::~CApp()
  15. {
  16.     // yeah, and what about me ??
  17. }
  18. bool CApp::AppInitialize()
  19. {
  20.     // set the standard texture directory
  21.     Texture* tex = Texture::GetInstance();
  22.     tex->SetTextureDirectory( "data\" );
  23.     // pass some standard parameters to our scenemanager
  24.     SceneManager* sm = SceneManager::GetInstance();
  25.     sm->SetResolution( m_iWindowWidth, m_iWindowHeight );
  26.     // add the scenes, in all their hardcoded splendure
  27.     sm->AddScene( new CIntroScene() );
  28.     sm->AddScene( new CIntroScene2() );
  29.     sm->AddScene( new CCresentScene() ); // <---
  30.     sm->AddScene( new CTubeScene() );    //    |
  31.     sm->AddScene( new CCresentScene() ); // <---- didn't have time to do a proper playlist :)
  32.     sm->AddScene( new CCreditsScene() );
  33.     // let every scene initialize
  34.     if (!sm->InitializeScenes())
  35.         return false;
  36.     // start,.. :)
  37.     sm->Start( m_parApp.m_bLooped );
  38.     if (m_parApp.m_bSound)
  39.     {
  40.         // intialize BASS sound system and 
  41.         // start playing music
  42.         Sound* snd = Sound::GetInstance();
  43.         if (!snd->Initialize( 44100, false ))
  44.             return false;
  45.         if (!snd->LoadSong( "data\noise.mod" ))
  46.             return false;
  47.         snd->Play();
  48.     }
  49.     return true;
  50. }
  51. bool CApp::AppCleanup()
  52. {
  53.     // stop and cleanup sound
  54.     if (m_parApp.m_bSound)
  55.     {
  56.         Sound* snd = Sound::GetInstance();
  57.         snd->Stop();
  58.         snd->Cleanup();
  59.         snd->ReleaseInstance();
  60.     }
  61.     SceneManager* sm = SceneManager::GetInstance();
  62.     if (!sm->CleanupScenes())
  63.         return false;
  64.     sm->ClearScenes();
  65.     sm->ReleaseInstance();
  66.     return true;
  67. }
  68. bool CApp::AppRender()
  69. {
  70.     glClear( GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT );
  71.     glLoadIdentity();
  72.     SceneManager* sm = SceneManager::GetInstance();
  73.     if (!sm->UpdateAndRender())
  74.         PostQuitMessage( 0 );
  75.     return true;
  76. }