예제 #1
0
//
// 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
}
예제 #2
0
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);
    }
}