History: Creating Overlays via Code
Source of version: 7 (current)
Copy to clipboard
%ogre17%%ogre16% This code snippet demonstrates how to create ((overlay|Overlays)) using code.
Here's a code snippet that shows the absolute minimal overlay functionality. It displays a solid white rectangle on the
screen at the top left corner:
%%%
{CODE(wrap="1", colors="c++")}
Ogre::OverlayManager& overlayManager = Ogre::OverlayManager::getSingleton();
// Create an overlay
Ogre::Overlay* overlay = overlayManager.create( "OverlayName" );
// Create a panel
Ogre::OverlayContainer* panel = static_cast<Ogre::OverlayContainer*>( overlayManager.createOverlayElement( "Panel", "PanelName" ) );
panel->setPosition( 0.0, 0.0 );
panel->setDimensions( 0.1, 0.1 );
panel->setMaterialName( "BaseWhite" );
// Add the panel to the overlay
overlay->add2D( panel );
// Show the overlay
overlay->show();
{CODE}
It uses no external materials or fonts.
---
As of this time the following code doesn't work due to a bug in the Ogre release. The created texture it
uses is not created before it's first use. The overlay code then fails and nothing will be displayed.
You'll need to include OgreTextAreaOverlayElement.h and OgreFontManager.h for this snippet to compile.
%%%
{CODE(wrap="1", colors="c++")}OverlayManager& overlayManager = OverlayManager::getSingleton();
// Create a panel
OverlayContainer* panel = static_cast<OverlayContainer*>(
overlayManager.createOverlayElement("Panel", "PanelName"));
panel->setMetricsMode(Ogre::GMM_PIXELS);
panel->setPosition(10, 10);
panel->setDimensions(100, 100);
//panel->setMaterialName("MaterialName"); // Optional background material
// Create a text area
TextAreaOverlayElement* textArea = static_cast<TextAreaOverlayElement*>(
overlayManager.createOverlayElement("TextArea", "TextAreaName"));
textArea->setMetricsMode(Ogre::GMM_PIXELS);
textArea->setPosition(0, 0);
textArea->setDimensions(100, 100);
textArea->setCaption("Hello, World!");
textArea->setCharHeight(16);
textArea->setFontName("TrebuchetMSBold");
textArea->setColourBottom(ColourValue(0.3, 0.5, 0.3));
textArea->setColourTop(ColourValue(0.5, 0.7, 0.5));
// Create an overlay, and add the panel
Overlay* overlay = overlayManager.create("OverlayName");
overlay->add2D(panel);
// Add the text area to the panel
panel->addChild(textArea);
// Show the overlay
overlay->show();{CODE}
!!See also
* ((-Overlay))
* ((-Material))
* ((-Texture))
---
Alias: (alias(Creating_Overlays_via_Code ))