OGRE  master
Object-Oriented Graphics Rendering Engine
OgreBites::ApplicationContextBase Class Reference

Base class responsible for setting up a common context for applications. More...

#include <OgreApplicationContextBase.h>

+ Inheritance diagram for OgreBites::ApplicationContextBase:

Public Member Functions

 ApplicationContextBase (const Ogre::String &appName="Ogre3D")
 
virtual ~ApplicationContextBase ()
 
void _fireInputEvent (const Event &event, uint32_t windowID) const
 inspect the event and call one of the corresponding functions on the registered InputListener More...
 
virtual void addInputListener (NativeWindowType *win, InputListener *lis)
 attach input listener More...
 
void addInputListener (InputListener *lis)
 
void closeApp ()
 This function closes down the application - saves the configuration then shutdowns. More...
 
void createDummyScene ()
 Creates dummy scene to allow rendering GUI in viewport. More...
 
virtual void createRoot ()
 Creates the OGRE root. More...
 
virtual NativeWindowPair createWindow (const Ogre::String &name, uint32_t w=0, uint32_t h=0, Ogre::NameValuePairList miscParams=Ogre::NameValuePairList())
 Create a new render window. More...
 
void destroyDummyScene ()
 Destroys dummy scene. More...
 
void destroyRTShaderSystem ()
 Destroy the RT Shader system. More...
 
void destroyWindow (const Ogre::String &name)
 destroy and erase an NativeWindowPair by name More...
 
void enableShaderCache () const
 enables the caching of compiled shaders to file More...
 
bool frameEnded (const Ogre::FrameEvent &evt) override
 Called just after a frame has been rendered. More...
 
bool frameRenderingQueued (const Ogre::FrameEvent &evt) override
 Called after all render targets have had their rendering commands issued, but before render windows have been asked to flip their buffers over. More...
 
bool frameStarted (const Ogre::FrameEvent &evt) override
 Called when a frame is about to begin rendering. More...
 
virtual float getDisplayDPI () const
 get the vertical DPI of the display More...
 
Ogre::FileSystemLayergetFSLayer () const
 get the FileSystemLayer instance pointing to an application specific directory More...
 
InputListenergetImGuiInputListener () const
 
Ogre::OverlaySystemgetOverlaySystem () const
 
Ogre::RenderWindowgetRenderWindow () const
 get the main RenderWindow owns the context on OpenGL More...
 
Ogre::RootgetRoot () const
 
void initApp ()
 This function initializes the render system and resources. More...
 
Ogre::ImGuiOverlayinitialiseImGui ()
 Set up the overlay system for usage with ImGui. More...
 
bool initialiseRTShaderSystem ()
 Initialize the RT Shader system. More...
 
virtual void loadResources ()
 Loads context-wide resource groups. More...
 
virtual void locateResources ()
 Finds context-wide resource groups. More...
 
virtual bool oneTimeConfig ()
 Configures the startup settings for OGRE. More...
 
virtual void pollEvents ()
 process all window events since last call More...
 
void reconfigure (const Ogre::String &renderer, Ogre::NameValuePairList &options)
 
virtual void removeInputListener (NativeWindowType *win, InputListener *lis)
 detatch input listener More...
 
void removeInputListener (InputListener *lis)
 
void runRenderingSettingsDialog ()
 Show the renderer configuration menu. More...
 
void setRTSSWriteShadersToDisk (bool write)
 make the RTSS write out the generated shaders for caching and debugging More...
 
virtual void setup ()
 Sets up the context after configuration. More...
 
virtual void setWindowGrab (NativeWindowType *win, bool grab=true)
 When input is grabbed the mouse is confined to the window. More...
 
void setWindowGrab (bool grab=true)
 
virtual void shutdown ()
 Cleans up and shuts down the context. More...
 
virtual void windowClosed (Ogre::RenderWindow *rw)
 
virtual bool windowClosing (Ogre::RenderWindow *rw)
 
virtual void windowFocusChange (Ogre::RenderWindow *rw)
 
virtual void windowMoved (Ogre::RenderWindow *rw)
 
virtual void windowResized (Ogre::RenderWindow *rw)
 
- Public Member Functions inherited from Ogre::FrameListener
virtual ~FrameListener ()
 

Static Public Member Functions

static Ogre::String getDefaultMediaDir ()
 the directory where the media files were installed More...
 

Detailed Description

Base class responsible for setting up a common context for applications.

Subclass to implement specific event callbacks.

Constructor & Destructor Documentation

◆ ApplicationContextBase()

OgreBites::ApplicationContextBase::ApplicationContextBase ( const Ogre::String appName = "Ogre3D")
explicit

◆ ~ApplicationContextBase()

virtual OgreBites::ApplicationContextBase::~ApplicationContextBase ( )
virtual

Member Function Documentation

◆ getRenderWindow()

Ogre::RenderWindow* OgreBites::ApplicationContextBase::getRenderWindow ( ) const
inline

get the main RenderWindow owns the context on OpenGL

◆ getRoot()

Ogre::Root* OgreBites::ApplicationContextBase::getRoot ( ) const
inline

◆ getOverlaySystem()

Ogre::OverlaySystem* OgreBites::ApplicationContextBase::getOverlaySystem ( ) const
inline

◆ initApp()

void OgreBites::ApplicationContextBase::initApp ( )

This function initializes the render system and resources.

◆ closeApp()

void OgreBites::ApplicationContextBase::closeApp ( )

This function closes down the application - saves the configuration then shutdowns.

◆ frameStarted()

bool OgreBites::ApplicationContextBase::frameStarted ( const Ogre::FrameEvent evt)
inlineoverridevirtual

Called when a frame is about to begin rendering.

This event happens before any render targets have begun updating.

Returns
True to go ahead, false to abort rendering and drop out of the rendering loop.

Reimplemented from Ogre::FrameListener.

◆ frameRenderingQueued()

bool OgreBites::ApplicationContextBase::frameRenderingQueued ( const Ogre::FrameEvent evt)
overridevirtual

Called after all render targets have had their rendering commands issued, but before render windows have been asked to flip their buffers over.

The usefulness of this event comes from the fact that rendering commands are queued for the GPU to process. These can take a little while to finish, and so while that is happening the CPU can be doing useful things. Once the request to 'flip buffers' happens, the thread requesting it will block until the GPU is ready, which can waste CPU cycles. Therefore, it is often a good idea to use this callback to perform per-frame processing. Of course because the frame's rendering commands have already been issued, any changes you make will only take effect from the next frame, but in most cases that's not noticeable.

Returns
True to continue rendering, false to drop out of the rendering loop.

Reimplemented from Ogre::FrameListener.

◆ frameEnded()

bool OgreBites::ApplicationContextBase::frameEnded ( const Ogre::FrameEvent evt)
inlineoverridevirtual

Called just after a frame has been rendered.

This event happens after all render targets have been fully updated and the buffers switched.

Returns
True to continue with the next frame, false to drop out of the rendering loop.

Reimplemented from Ogre::FrameListener.

◆ windowMoved()

virtual void OgreBites::ApplicationContextBase::windowMoved ( Ogre::RenderWindow rw)
inlinevirtual

◆ windowResized()

virtual void OgreBites::ApplicationContextBase::windowResized ( Ogre::RenderWindow rw)
inlinevirtual

◆ windowClosing()

virtual bool OgreBites::ApplicationContextBase::windowClosing ( Ogre::RenderWindow rw)
inlinevirtual

◆ windowClosed()

virtual void OgreBites::ApplicationContextBase::windowClosed ( Ogre::RenderWindow rw)
inlinevirtual

◆ windowFocusChange()

virtual void OgreBites::ApplicationContextBase::windowFocusChange ( Ogre::RenderWindow rw)
inlinevirtual

◆ _fireInputEvent()

void OgreBites::ApplicationContextBase::_fireInputEvent ( const Event event,
uint32_t  windowID 
) const

inspect the event and call one of the corresponding functions on the registered InputListener

Parameters
eventInput Event
windowIDonly call listeners of this window

◆ initialiseRTShaderSystem()

bool OgreBites::ApplicationContextBase::initialiseRTShaderSystem ( )

Initialize the RT Shader system.

◆ setRTSSWriteShadersToDisk()

void OgreBites::ApplicationContextBase::setRTSSWriteShadersToDisk ( bool  write)

make the RTSS write out the generated shaders for caching and debugging

by default all shaders are generated to system memory. Must be called before loadResources

Parameters
writeWhether to write out the generated shaders

◆ destroyRTShaderSystem()

void OgreBites::ApplicationContextBase::destroyRTShaderSystem ( )

Destroy the RT Shader system.

◆ setup()

virtual void OgreBites::ApplicationContextBase::setup ( )
virtual

Sets up the context after configuration.

◆ createRoot()

virtual void OgreBites::ApplicationContextBase::createRoot ( )
virtual

Creates the OGRE root.

◆ oneTimeConfig()

virtual bool OgreBites::ApplicationContextBase::oneTimeConfig ( )
virtual

Configures the startup settings for OGRE.

I use the config dialog here, but you can also restore from a config file. Note that this only happens when you start the context, and not when you reset it.

◆ setWindowGrab() [1/2]

virtual void OgreBites::ApplicationContextBase::setWindowGrab ( NativeWindowType win,
bool  grab = true 
)
inlinevirtual

When input is grabbed the mouse is confined to the window.

Reimplemented in OgreBites::ApplicationContextQt.

Referenced by OgreBites::ApplicationContextQt::useQtEventLoop().

◆ getDisplayDPI()

virtual float OgreBites::ApplicationContextBase::getDisplayDPI ( ) const
inlinevirtual

get the vertical DPI of the display

◆ setWindowGrab() [2/2]

void OgreBites::ApplicationContextBase::setWindowGrab ( bool  grab = true)
inline

This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts.

References OgreAssert.

◆ locateResources()

virtual void OgreBites::ApplicationContextBase::locateResources ( )
virtual

Finds context-wide resource groups.

I load paths from a config file here, but you can choose your resource locations however you want.

◆ loadResources()

virtual void OgreBites::ApplicationContextBase::loadResources ( )
virtual

Loads context-wide resource groups.

I chose here to simply initialise all groups, but you can fully load specific ones if you wish.

◆ reconfigure()

void OgreBites::ApplicationContextBase::reconfigure ( const Ogre::String renderer,
Ogre::NameValuePairList options 
)
Deprecated:
use do not use

◆ shutdown()

virtual void OgreBites::ApplicationContextBase::shutdown ( )
virtual

Cleans up and shuts down the context.

Reimplemented in OgreBites::ApplicationContextQt.

◆ pollEvents()

virtual void OgreBites::ApplicationContextBase::pollEvents ( )
virtual

process all window events since last call

Reimplemented in OgreBites::ApplicationContextQt.

◆ createDummyScene()

void OgreBites::ApplicationContextBase::createDummyScene ( )

Creates dummy scene to allow rendering GUI in viewport.

◆ destroyDummyScene()

void OgreBites::ApplicationContextBase::destroyDummyScene ( )

Destroys dummy scene.

◆ runRenderingSettingsDialog()

void OgreBites::ApplicationContextBase::runRenderingSettingsDialog ( )

Show the renderer configuration menu.

creates a dummy scene to allow rendering the dialog

◆ enableShaderCache()

void OgreBites::ApplicationContextBase::enableShaderCache ( ) const

enables the caching of compiled shaders to file

also loads any existing cache

◆ addInputListener() [1/2]

virtual void OgreBites::ApplicationContextBase::addInputListener ( NativeWindowType win,
InputListener lis 
)
virtual

attach input listener

Parameters
listhe listener
winthe window to receive the events for.

Reimplemented in OgreBites::ApplicationContextQt.

Referenced by OgreBites::ApplicationContextQt::useQtEventLoop().

◆ addInputListener() [2/2]

void OgreBites::ApplicationContextBase::addInputListener ( InputListener lis)
inline

This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts.

References OgreAssert.

◆ removeInputListener() [1/2]

virtual void OgreBites::ApplicationContextBase::removeInputListener ( NativeWindowType win,
InputListener lis 
)
virtual

detatch input listener

Parameters
listhe listener
winthe window to receive the events for.

Reimplemented in OgreBites::ApplicationContextQt.

Referenced by OgreBites::ApplicationContextQt::useQtEventLoop().

◆ removeInputListener() [2/2]

void OgreBites::ApplicationContextBase::removeInputListener ( InputListener lis)
inline

This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts.

References OgreAssert.

◆ createWindow()

virtual NativeWindowPair OgreBites::ApplicationContextBase::createWindow ( const Ogre::String name,
uint32_t  w = 0,
uint32_t  h = 0,
Ogre::NameValuePairList  miscParams = Ogre::NameValuePairList() 
)
virtual

Create a new render window.

You must use SDL and not an auto-created window as SDL does not get the events otherwise.

By default the values from ogre.cfg are used for w, h and miscParams.

Reimplemented in OgreBites::ApplicationContextQt.

◆ destroyWindow()

void OgreBites::ApplicationContextBase::destroyWindow ( const Ogre::String name)

destroy and erase an NativeWindowPair by name

◆ getFSLayer()

Ogre::FileSystemLayer& OgreBites::ApplicationContextBase::getFSLayer ( ) const
inline

get the FileSystemLayer instance pointing to an application specific directory

◆ getDefaultMediaDir()

static Ogre::String OgreBites::ApplicationContextBase::getDefaultMediaDir ( )
static

the directory where the media files were installed

same as OGRE_MEDIA_DIR in CMake

◆ initialiseImGui()

Ogre::ImGuiOverlay* OgreBites::ApplicationContextBase::initialiseImGui ( )

Set up the overlay system for usage with ImGui.

◆ getImGuiInputListener()

InputListener* OgreBites::ApplicationContextBase::getImGuiInputListener ( ) const
inline

The documentation for this class was generated from the following file: