OGRE: Ogre::RenderQueue Class Reference

| OGRE 2.2.4 Object-Oriented Graphics Rendering Engine

Classes | Public Types | Public Member Functions | List of all members
Ogre::RenderQueue Class Reference
Core » RenderSystem

Enumeration of queue groups, by which the application may group queued renderables so that they are rendered together with events in between. More...

`#include <OgreRenderQueue.h>`

Inheritance diagram for Ogre::RenderQueue:
[legend]

## Public Types
enum | Modes { V1_LEGACY, V1_FAST, FAST }
enum | RqSortMode { DisableSort, NormalSort, StableSort }

## Public Member Functions
| RenderQueue (HlmsManager *hlmsManager, SceneManager *sceneManager, VaoManager *vaoManager)
| ~RenderQueue ()
void | addRenderableV1 (uint8 renderQueueId, bool casterPass, Renderable *pRend, const MovableObject *pMovableObject)
| Add a renderable (Ogre v1.x) object to the queue. More...
void | addRenderableV2 (size_t threadIdx, uint8 renderQueueId, bool casterPass, Renderable *pRend, const MovableObject *pMovableObject)
| Add a renderable (Ogre v2.0, i.e. More...
void | clear (void)
| Empty the queue - should only be called by SceneManagers. More...
void | clearState (void)
| The RenderQueue keeps track of API state to avoid redundant state change passes Calling this function forces the RenderQueue to re-set the Macro- & Blendblocks, shaders, and any other API dependendant calls on the next render. More...
void | frameEnded (void)
| Called when the frame has fully ended (ALL passes have been executed to all RTTs) More...
RenderQueue::Modes | getRenderQueueMode (uint8 rqId) const
RqSortMode | getSortRenderQueue (uint8 rqId) const
void | operator delete (void *ptr)
void | operator delete (void *ptr, const char *, int, const char *)
void | operator delete (void *ptr, void *)
void | operator delete[] (void *ptr)
void | operator delete[] (void *ptr, const char *, int, const char *)
void * | operator new (size_t sz)
void * | operator new (size_t sz, const char *file, int line, const char *func)
| operator new, with debug line info More...
void * | operator new (size_t sz, void *ptr)
| placement operator new More...
void * | operator new[] (size_t sz)
void * | operator new[] (size_t sz, const char *file, int line, const char *func)
| array operator new, with debug line info More...
void | render (RenderSystem *rs, uint8 firstRq, uint8 lastRq, bool casterPass, bool dualParaboloid)
void | renderPassPrepare (bool casterPass, bool dualParaboloid)
| If you need to call RenderQueue::render, then you must call this function. More...
void | renderSingleObject (Renderable *pRend, const MovableObject *pMovableObject, RenderSystem *rs, bool casterPass, bool dualParaboloid)
| Don't call this too often. Only renders v1 objects at the moment. More...
void | setRenderQueueMode (uint8 rqId, RenderQueue::Modes newMode)
| Sets the mode for the RenderQueue ID. More...
void | setSortRenderQueue (uint8 rqId, RqSortMode sortMode)
| Sets whether we should sort the render queue ID every frame. More...

## Detailed Description

Enumeration of queue groups, by which the application may group queued renderables so that they are rendered together with events in between.

Remarks
  When passed into methods these are actually passed as a uint8 to allow you to use values in between if you want to. Class to manage the scene object rendering queue.
  Objects are grouped by material to minimise rendering state changes. The map from material to renderable object is wrapped in a class for ease of use.

  This class now includes the concept of 'queue groups' which allows the application adding the renderable to specifically schedule it so that it is included in a discrete group. Good for separating renderables into the main scene, backgrounds and overlays, and also could be used in the future for more complex multipass routines like stenciling.

## Member Enumeration Documentation

## ◆ Modes

enum Ogre::RenderQueue::Modes

Enumerator
V1_LEGACY | This is the slowest mode. Renders the same or similar way to how Ogre 1.x rendered meshes. Only v1 entities can be put in this type of queue. Ideal for low level materials, InstancedEntity via InstanceManager, and any other weird custom object.
V1_FAST | Renders v1 entities using HLMS materials with some of the new benefits, but some deprecated features from Ogre 1.x might not be available or work properly (like global instancing buffer). Ideal for most v1 entities, particle effects and billboards using HLMS materials. Cannot be used by RenderSystems that don't support constant buffers (i.e. OpenGL ES 2)
FAST | Renders v2 items using HLMS materials with minimum driver overhead Recommended method for rendering extremely large amounts of objects of homogeneous and heterogenous meshes, with many different kinds of materials and textures. Only v2 Items can be put in this queue.

## ◆ RqSortMode

enum Ogre::RenderQueue::RqSortMode

Enumerator
DisableSort |
NormalSort |
StableSort |

## Constructor & Destructor Documentation

## ◆ RenderQueue()

Ogre::RenderQueue::RenderQueue | ( | HlmsManager * | hlmsManager,
|  | SceneManager * | sceneManager,
|  | VaoManager * | vaoManager
| ) |  |

## ◆ ~RenderQueue()

Ogre::RenderQueue::~RenderQueue | ( |  | ) |

## Member Function Documentation

## ◆ addRenderableV1()

void Ogre::RenderQueue::addRenderableV1 | ( | uint8 | renderQueueId,
|  | bool | casterPass,
|  | Renderable * | pRend,
|  | const MovableObject * | pMovableObject
| ) |  |

Add a renderable (Ogre v1.x) object to the queue.

See also
  addRenderable

## ◆ addRenderableV2()

void Ogre::RenderQueue::addRenderableV2 | ( | size_t | threadIdx,
|  | uint8 | renderQueueId,
|  | bool | casterPass,
|  | Renderable * | pRend,
|  | const MovableObject * | pMovableObject
| ) |  |

Add a renderable (Ogre v2.0, i.e.

Items; they use VAOs) object to the queue.

Remarks
  If sorting mode is set to DisableSort (RenderQueue::setSortRenderQueue) for the given renderQueueId, then the order in which renderables are added via RenderQueue::addRenderableV2 (and V1) determines the render order (the first added get rendered first) within that renderQueueId.

Parameters

  threadIdx | The unique index of the thread from which this function is called from. Valid range is [0; SceneManager::mNumWorkerThreads)
  renderQueueId | The ID of the render queue. Must be the same as the ID in pMovableObject->getRenderQueueGroup()
  casterPass | Whether we're performing the shadow mapping pass.
  pRend | Pointer to the Renderable to be added to the queue.
  pMovableObject | Pointer to the MovableObject linked to the Renderable.

## ◆ clear()

void Ogre::RenderQueue::clear | ( | void |  | ) |

Empty the queue - should only be called by SceneManagers.

## ◆ clearState()

void Ogre::RenderQueue::clearState | ( | void |  | ) |

The RenderQueue keeps track of API state to avoid redundant state change passes Calling this function forces the RenderQueue to re-set the Macro- & Blendblocks, shaders, and any other API dependendant calls on the next render.

Remarks
  Calling this function inside render or renderES2 won't have any effect.

## ◆ frameEnded()

void Ogre::RenderQueue::frameEnded | ( | void |  | ) |

Called when the frame has fully ended (ALL passes have been executed to all RTTs)

## ◆ getRenderQueueMode()

RenderQueue::Modes Ogre::RenderQueue::getRenderQueueMode | ( | uint8 | rqId | ) | const

## ◆ getSortRenderQueue()

RqSortMode Ogre::RenderQueue::getSortRenderQueue | ( | uint8 | rqId | ) | const

## ◆ operator delete() [1/3]

template<class Alloc >

void Ogre::AllocatedObject< Alloc >::operator delete | ( | void * | ptr | ) |
| inlineinherited

## ◆ operator delete() [2/3]

template<class Alloc >

void Ogre::AllocatedObject< Alloc >::operator delete | ( | void * | ptr,
|  | const char * | ,
|  | int | ,
|  | const char * |
| ) |  |
| inlineinherited

## ◆ operator delete() [3/3]

template<class Alloc >

void Ogre::AllocatedObject< Alloc >::operator delete | ( | void * | ptr,
|  | void * |
| ) |  |
| inlineinherited

## ◆ operator delete[]() [1/2]

template<class Alloc >

void Ogre::AllocatedObject< Alloc >::operator delete[] | ( | void * | ptr | ) |
| inlineinherited

## ◆ operator delete[]() [2/2]

template<class Alloc >

void Ogre::AllocatedObject< Alloc >::operator delete[] | ( | void * | ptr,
|  | const char * | ,
|  | int | ,
|  | const char * |
| ) |  |
| inlineinherited

## ◆ operator new() [1/3]

template<class Alloc >

void* Ogre::AllocatedObject< Alloc >::operator new | ( | size_t | sz | ) |
| inlineinherited

## ◆ operator new() [2/3]

template<class Alloc >

void* Ogre::AllocatedObject< Alloc >::operator new | ( | size_t | sz,
|  | const char * | file,
|  | int | line,
|  | const char * | func
| ) |  |
| inlineinherited

operator new, with debug line info

## ◆ operator new() [3/3]

template<class Alloc >

void* Ogre::AllocatedObject< Alloc >::operator new | ( | size_t | sz,
|  | void * | ptr
| ) |  |
| inlineinherited

placement operator new

## ◆ operator new[]() [1/2]

template<class Alloc >

void* Ogre::AllocatedObject< Alloc >::operator new[] | ( | size_t | sz | ) |
| inlineinherited

## ◆ operator new[]() [2/2]

template<class Alloc >

void* Ogre::AllocatedObject< Alloc >::operator new[] | ( | size_t | sz,
|  | const char * | file,
|  | int | line,
|  | const char * | func
| ) |  |
| inlineinherited

array operator new, with debug line info

## ◆ render()

void Ogre::RenderQueue::render | ( | RenderSystem * | rs,
|  | uint8 | firstRq,
|  | uint8 | lastRq,
|  | bool | casterPass,
|  | bool | dualParaboloid
| ) |  |

## ◆ renderPassPrepare()

void Ogre::RenderQueue::renderPassPrepare | ( | bool | casterPass,
|  | bool | dualParaboloid
| ) |  |

If you need to call RenderQueue::render, then you must call this function.

This function MUST be called (all listed functions are called in this order):

1. After RenderSystem::beginRenderPassDescriptor
2. After SceneManager::fireRenderQueueStarted
3. Before RenderSystem::executeRenderPassDescriptorDelayedActions
4. Before RenderQueue::render

Note that fireRenderQueueStarted just fires arbitrary listeners. You don't have to call that function if you are sure you don't need it.

To clarify functions are called in this order:

mRenderSystem->beginRenderPassDescriptor();
mSceneManager->fireRenderQueueStarted();
mRenderQueue->renderPassPrepare();
mRenderSystem->executeRenderPassDescriptorDelayedActions();
mRenderQueue->render();

Calling these functions in proper order is needed for best compatibility with Metal

Parameters

  casterPass |
  dualParaboloid |

## ◆ renderSingleObject()

void Ogre::RenderQueue::renderSingleObject | ( | Renderable * | pRend,
|  | const MovableObject * | pMovableObject,
|  | RenderSystem * | rs,
|  | bool | casterPass,
|  | bool | dualParaboloid
| ) |  |

Don't call this too often. Only renders v1 objects at the moment.

## ◆ setRenderQueueMode()

void Ogre::RenderQueue::setRenderQueueMode | ( | uint8 | rqId,
|  | RenderQueue::Modes | newMode
| ) |  |

Sets the mode for the RenderQueue ID.

See also
  RenderQueue::Modes

Parameters

  rqId | ID of the render queue
  newMode | The new mode to use.

## ◆ setSortRenderQueue()

void Ogre::RenderQueue::setSortRenderQueue | ( | uint8 | rqId,
|  | RqSortMode | sortMode
| ) |  |

Sets whether we should sort the render queue ID every frame.

Parameters

  rqId | ID of the render queue
  bSort | When false, the render queue group won't be sorted. Useful when the RQ needs to be drawn exactly in the order that Renderables were added, or when you have a deep CPU bottleneck where the time taken to sort hurts more than it is supposed to help.

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

- OgreRenderQueue.h