Overlays permitem que elementos 2D ou 3D sejam renderizados no topo do conteudo normal da cena para criar efeitos como heads-up displays (HUD's), sistemas de menus, paineis de status, etc. O painel de estatisticas que e exibido no OGRE e um exemplo de overlay:Como se ve na imagem, o painel de estatisticas "FPS" e a logo do OGRE se sobrepoem a qualquer objeto da cena atraves de overlay.Overlays podem conter elementos bi ou tridimensionais. Elementos bidimensionais sao usados para HUD's e os tridimensionais podem ser usados para criar cockpits, o braco segurando uma arma que costumeiramente se ve em games FPS ou qualquer outro objeto 3D que se deseje renderizar no topo de todo o resto da cena visivel.Em jogos de simulacao de voo, a cena do mundo exterior, fora da cabine do piloto, e atualizada constantemente, de acordo com a movimentacao do aviao. O cockpit pode ser renderizado como um elemento 3D que se sobrepoe ao resto da cena.Overlays podem ser criados com o metodo SceneManager::createOverlay() [obs.: esse metodo nao consta na documentacao! Ver.] ou atraves de sua definicao em um script .overlay. O uso de scripts e mais pratico por que eles podem ser alterados dinamicamente (sem a necessidade de recompilar o codigo!).Observe que e possivel definir tantos overlays quanto se queiram: eles comecam seu ciclo de vida escondidos e podem ser exibidos pela chamada ao seu metodo show(). Tambem e possivel exibir multiplos overlays simultaneamente e sua ordem de aparicao (em profundidade, no eixo Z) e definida pelo metodo Overlay::setZOrder().Criando elementos 2DA classe OverlayElement abstrai os detalhes de elementos 2D que sao adicionados a overlays. Todos os itens que podem ser incorporados a overlays sao derivados dessa classe. E possivel (e aconselhavel) que usuarios de OGRE definam suas proprias subclasses de OverlayElement, que fornecam seus proprios controles de usuario.As caracteristicas-chave em comum de todos os OverlayElements sao propriedades como tamanho, posicao, nome do material basico, etc. Subclasses estendem essas caracteristicas afim de incluir propriedades mais complexas e comportamento.Uma subclasse importante - que ja vem com OGRE - da classe OverlayElement e a classe OverlayContainer. A unica diferenca entre as duas classes e que OverlayContainer pode conter outros OverlayElements, agrupando-os (permitindo que sejam movidos em conjunto, por exemplo) e fornecendo a eles coordenadas de origem local para facilitar a formacao do agrupamento.Outra classe importante e OverlayManager. Sempre que uma aplicacao desejar criar um elemento 2D para adiciona-lo a um overlay (ou a um container de overlays - OverlayContainer), ela deve chamar o metodo OverlayManager::createOverlayElement. O tipo do elemento que se deseja criar e indicado com uma string. A razao para tal e que isso permite que plugins adicionem novos tipos de OverlayElements que podem ser criados sem que seja necessario referenciar suas bibliotecas. Por exemplo, para criar um painel (uma area plana retangular que contem outros OverlayElements), voce pode chamar o metodo OverlayManager::getSingleton().createOverlayElement("Panel", "myNewPanel");Adicionando elementos 2D ao OverlaySomente OverlayContainers podem ser adicionados diretamente a um Overlay. Isso por que cada level do container estabelece a Z-ordem dos elementos agrupados nele. Assim, se voce aninhar muitos containers, os internos terao uma