//============================================================================ //レンダリング //============================================================================ void CEffectMaxCharge::Rendering() { Renderer::IRender *pRender = CCommonObject::GetAppli()->GetRenderer(); if( m_IsAdd ) { pRender->SetDrawType( DRAW_TYPE_ADD ); CSprite::Rendering(); pRender->SetDrawType( DRAW_TYPE_NORMAL ); } else if( m_IsBlend ) { pRender->SetDrawType( DRAW_TYPE_BLEND ); CSprite::Rendering(); pRender->SetDrawType( DRAW_TYPE_NORMAL ); } else { CSprite::Rendering(); } }
bool CModelManager::LoadModel(const char *file ) { Renderer::IRender *render = GameSystem::SystemGetter::GetRender(); Scene::ISceneManager * pSceneMgr = GameSystem::SystemGetter::GetSceneManager(); if( file == NULL ) { return false; } ATOM atom = AddAtom(file); if( m_relation[atom] != NULL ) { return true; } m_pFileManager->SetCurrentPath( "Model" ); Renderer::Object::IModel *model; model = render->CreateModelFromFile( file ); m_pFileManager->SetCurrentPath( "Texture" ); if( model == NULL ) { return false; } Scene::IModelActor *actor = pSceneMgr->CreateActor( model ); if( actor == NULL ) { model->Release(); delete model; return false; } m_relation_to_model[atom] = model; m_relation[atom] = actor; m_added_models.push_back(atom); return true; }
// 初期化 bool InitializeSelene( ICore *pCore , File::IFileManager **ppFileMgr , IGraphicCard **ppGraphicCard , Renderer::IRender **ppRender , Scene::ISceneManager **ppSceneMgr , Scene::ICamera **ppCamera , int screen_width , int screen_height ) { if( !InitializeFileMgr( pCore , ppFileMgr ) ) { return false; } if( !InitializeGraphicCard( pCore , ppGraphicCard ) ) { return false; } //----------------------------------------------------------------- // ウィンドウ作成 //----------------------------------------------------------------- // ICoreインターフェイス内の情報に従ってアプリケーション // ウィンドウを生成します。 // IGraphicCardからの情報を元に画面解像度などを変更する場合は、 // ICore::Start()を呼び出す前に行ってください。 pCore->Start( screen_width , screen_height , true ); if( !InitializeRender( *ppGraphicCard , ppRender ) ) { return false; } if( !InitializeScene( *ppRender , ppSceneMgr , screen_width , screen_height ) ) { return false; } if( !InitializeCamera( *ppSceneMgr , ppCamera , screen_width , screen_height ) ) { return false; } // 深度処理のステート設定 // 深度バッファに関しての設定を行います。 // 深度バッファへの書き込みを有効にし、 // 深度バッファのテストを有効にしています。 Renderer::IRender *pRender = *ppRender; pRender->SetDepthTestEnable( true ); pRender->SetDepthWriteEnable( true ); // 描画ステート pRender->SetAlphaTestEnable( true ); // アルファテストON pRender->SetDepthTestEnable( true ); // ZテストON pRender->SetDepthWriteEnable( true ); // Z書き込みON pRender->SetDrawType( DRAW_TYPE_BLEND ); // 通常描画 return true; }
//============================================================================ //ファイル読み込み //============================================================================ //[return] // ファイル読み込みに成功したか //=========================================================================== bool CSprite::Load( ) { Renderer::IRender *pRender = CCommonObject::GetAppli()->GetRenderer(); File::IFileManager *pFileMgr = CCommonObject::GetAppli()->GetFileMgr(); pFileMgr->SetCurrentPath("Texture"); const char *pFileName = m_strFileName.c_str(); printf("LOAD TEXTURE[%s]", pFileName ); //テクスチャファイルの生成(同一ファイルがあったら複製) m_pTex = pRender->CreateTextureFromFile( pFileName ); _ASSERT( m_pTex ); //読み込みに失敗? if( m_pTex->IsInvalid() ) { return false; } printf( " : -> %s\n", m_pTex->IsInvalid() ? "Failed" : "Succeeded" ); /*サイズの設定*/ m_fSize.x = toF( m_pTex->GetOriginalSize().x / m_DivNum.x ); m_fSize.y = toF( m_pTex->GetOriginalSize().y / m_DivNum.y ); m_SrcRect.Set( 0, 0, m_fSize.x, m_fSize.y ), /*スプライトの生成*/ CreateSprite( pRender, 500 ); return true; }
//============================================================================= //処理 //============================================================================= //[input] // pScene:設定するシーン //============================================================================= void CScene::Exec(CScene *pScene) { Renderer::IRender *pRender = pScene->GetAppDevice()->GetRenderer(); CSprite *pSpr = dynamic_cast<CSprite *>( m_p2DObj->FindObjectFromName("Loading") ); pSpr->SetDivnum( Math::Point2DI(6, 1) ); pScene->GetAppDevice()->GetRenderer()->Clear(); pScene->GetAppDevice()->GetRenderer()->Begin(); pSpr->Rendering(); //pScene->GetAppDevice()->GetRenderer()->DebugPrint( Math::Point2DI( 400, 300 ), CColor(255, 255, 255 ), "Npw Loading" ); pScene->GetAppDevice()->GetRenderer()->End(); pSpr->DrawAnimation( 6, 0 ); /*ロード終わってない*/ if( !pScene->GetLoadEndFlag() ) { static string Str = "Now Loading"; static int count = 0; count ++; if( count % 10 == 0 ) { Str += "."; } if( count >= 40 ) { count = 0; Str = "Now Loading"; } pRender->DrawText( Math::Point2DI( 590, 520 ), CColor(255, 255, 255 ), Str.c_str() ); } /*ロード終了*/ if( pScene->GetLoadEndFlag() ) { pSpr->SetVisibleFlag( false ); m_p3DObj->Init(); CCamera *objCamMain = dynamic_cast<CCamera *>( m_pGameObj->FindObjectFromName("CamMain") ); objCamMain->Init(); pSpr->Move(); /*キャラが画面外にいったら、次のシーンに*/ if( pSpr->GetPosition().x <= -100 ) { #if defined( DEBUG_MAP_EDIT ) m_eNextScene = SCENE_GAMEMAIN; #elif defined( DEBUG_MAP_SEE ) m_eNextScene = SCENE_DEMO; #elif defined( DEBUG_CHAT ) m_eNextScene = SCENE_CHAT; #endif pScene->SetSceneState( STATE_STANDBY ); pScene->ChangeScene( m_eNextScene ); } } }