Пример #1
0
void CGUIWindowManager::Render()
{
  assert(g_application.IsCurrentThread());
  CSingleLock lock(g_graphicsContext);
  CGUIWindow* pWindow = GetWindow(GetActiveWindow());
  if (pWindow)
  {
    pWindow->ClearBackground();
    pWindow->Render();
  }

  // we render the dialogs based on their render order.
  vector<CGUIWindow *> renderList = m_activeDialogs;
  stable_sort(renderList.begin(), renderList.end(), RenderOrderSortFunction);
  
  for (iDialog it = renderList.begin(); it != renderList.end(); ++it)
  {
    if ((*it)->IsDialogRunning())
      (*it)->Render();
  }
}
Пример #2
0
void CGUIWindowManager::Render_Internal()
{
  CSingleLock lock(g_graphicsContext);

  int nActive = GetActiveWindow();
  CGUIWindow* pWindow = GetWindow(nActive);
  if(!pWindow && (nActive < WINDOW_APPS_START || nActive > WINDOW_APPS_END))
  {
    g_graphicsContext.Clear();
    return;
  }

  m_bUseFBO = g_WindowManagerFBO.IsSupported() && IsColorBufferActive();

  // FBO don't work in Win32 GLES emulator
#if defined(_WIN32) && defined(HAS_GLES)
  m_bUseFBO = false;
#endif

  if(g_graphicsContext.GetRenderLowresGraphics())
    m_bUseFBO = false;

#ifdef HAS_EMBEDDED
  if(g_application.IsPlaying())
    m_bUseFBO = false;
#endif

  if(!m_bUseFBO)
  {
    m_bFBOValid = false;
    pWindow->Render();
  }
  else
  {
    RenderUsingFBO(pWindow);
  }
}