// // per frame // void GameRenderer::AddDraw() { // add cameras to buckets Renderer* renderer = Renderer::GetInstance(); renderer->SetBucketMatrix(RENDERBUCKET_SKY, m_mainCamera->ViewProjectionMatrix()); renderer->SetBucketMatrix(RENDERBUCKET_BACKGROUND, m_mainCamera->ViewProjectionMatrix()); renderer->SetBucketMatrix(RENDERBUCKET_HUD, GLKMatrix4Identity); // add draw cmds to render buckets std::list<IRenderComponent*>::iterator it; for(it=m_renderComponentList->begin() ; it != m_renderComponentList->end(); it++) { (*it)->AddDraw(); } #if 0//defined(DEBUG) // testing only; add a rectangle to the Hud bucket RenderCmdFactory* factory = GameRenderer::GetInstance()->GetCmdFactory(); // set material SimpleMaterialCmd* material = reinterpret_cast<SimpleMaterialCmd*>(factory->NewCmd(RENDERCMD_SIMPLEMATERIAL)); material->SetDiffuse(1.0f, 1.0f, 1.0f, 1.0f); renderer->AddCmd(RENDERBUCKET_HUD, material); // geom HudRectCmd* geom = reinterpret_cast<HudRectCmd*>(factory->NewCmd(RENDERCMD_HUDRECT)); geom->SetTransform(GLKMatrix4Identity); geom->SetModel(ModelLib::GetInstance()->GetShape(GAMESHAPE_RECT)); renderer->AddCmd(RENDERBUCKET_HUD, geom); #endif }
void GroundPlane::AddDraw() { if(m_model) { Renderer* renderer = Renderer::GetInstance(); RenderCmdFactory* factory = GameRenderer::GetInstance()->GetCmdFactory(); // set material SimpleMaterialCmd* material = reinterpret_cast<SimpleMaterialCmd*>(factory->NewCmd(RENDERCMD_SIMPLEMATERIAL)); renderer->AddCmd(RENDERBUCKET_BACKGROUND, material); // geom GroundPlaneCmd* geom = reinterpret_cast<GroundPlaneCmd*>(factory->NewCmd(RENDERCMD_GROUNDPLANE)); geom->SetModel(m_model); renderer->AddCmd(RENDERBUCKET_BACKGROUND, geom); } }