OGRE-Next: Ogre::ConstBufferPool Class Reference

| OGRE-Next 3.0.0 Object-Oriented Graphics Rendering Engine

Loading...
Searching...
No Matches
Classes | Public Types | Public Member Functions | List of all members
Ogre::ConstBufferPool Class Reference
Core » Resources

Maintains a pool of buffers grouped by hash ID. More...

`#include <OgreConstBufferPool.h>`

## Classes
struct | BufferPool
struct | ExtraBufferParams

## Public Types
enum | DirtyFlags { DirtyNone = 0u , DirtyConstBuffer = 1u << 0u , DirtyTextures = 1u << 1u , DirtySamplers = 1u << 2u }
enum | OptimizationStrategy { LowerCpuOverhead , LowerGpuOverhead }

## Public Member Functions
| ConstBufferPool (uint32 bytesPerSlot, const ExtraBufferParams &extraBufferParams)
virtual | ~ConstBufferPool ()
virtual void | _changeRenderSystem (RenderSystem *newRs)
OptimizationStrategy | getOptimizationStrategy () const
size_t | getPoolIndex (ConstBufferPoolUser *user) const
| Gets an ID corresponding to the pool this user was assigned to, unique per hash.
void | releaseSlot (ConstBufferPoolUser *user)
| Releases a slot requested with requestSlot.
void | requestSlot (uint32 hash, ConstBufferPoolUser *user, bool wantsExtraBuffer)
| Requests a slot and fills 'user'. Automatically schedules for update.
void | scheduleForUpdate (ConstBufferPoolUser *dirtyUser, uint8 dirtyFlags=DirtyConstBuffer)
virtual void | setOptimizationStrategy (OptimizationStrategy optimizationStrategy)
| Sets the optimization strategy.

## Detailed Description

Maintains a pool of buffers grouped by hash ID.

Keeping them separated by hash prevents mixing materials in the same buffer (which has limited space) that could never be batched together in the same draw call.

When a buffer is full and has used all of its free slots, a new buffer is allocated.

## Member Enumeration Documentation

## ◆ DirtyFlags

enum Ogre::ConstBufferPool::DirtyFlags

Enumerator
DirtyNone |
DirtyConstBuffer |
DirtyTextures |
DirtySamplers |

## ◆ OptimizationStrategy

enum Ogre::ConstBufferPool::OptimizationStrategy

Enumerator
LowerCpuOverhead | Optimize for low CPU overhead. Use this on slow CPUs (i.e. older AMD CPU models) or if CPU is the bottleneck. This strategy is optimized for having a lot of different materials. Default on Desktop.
LowerGpuOverhead | Optimize for low GPU overhead. Use this if GPU is the bottleneck. This strategy performs best when you have few materials. Do not enable this mode blindly unless you've profiled and it gives you important benefits. Default on mobile.

## Constructor & Destructor Documentation

## ◆ ConstBufferPool()

Ogre::ConstBufferPool::ConstBufferPool | ( | uint32 | bytesPerSlot,
|  | const ExtraBufferParams & | extraBufferParams )

## ◆ ~ConstBufferPool()

virtual Ogre::ConstBufferPool::~ConstBufferPool | ( |  | ) |
| virtual

## Member Function Documentation

## ◆ _changeRenderSystem()

virtual void Ogre::ConstBufferPool::_changeRenderSystem | ( | RenderSystem * | newRs | ) |
| virtual

## ◆ getOptimizationStrategy()

OptimizationStrategy Ogre::ConstBufferPool::getOptimizationStrategy | ( |  | ) | const

## ◆ getPoolIndex()

size_t Ogre::ConstBufferPool::getPoolIndex | ( | ConstBufferPoolUser * | user | ) | const

Gets an ID corresponding to the pool this user was assigned to, unique per hash.

## ◆ releaseSlot()

void Ogre::ConstBufferPool::releaseSlot | ( | ConstBufferPoolUser * | user | ) |

Releases a slot requested with requestSlot.

## ◆ requestSlot()

void Ogre::ConstBufferPool::requestSlot | ( | uint32 | hash,
|  | ConstBufferPoolUser * | user,
|  | bool | wantsExtraBuffer )

Requests a slot and fills 'user'. Automatically schedules for update.

## ◆ scheduleForUpdate()

void Ogre::ConstBufferPool::scheduleForUpdate | ( | ConstBufferPoolUser * | dirtyUser,
|  | uint8 | dirtyFlags = DirtyConstBuffer )

References DirtyConstBuffer.

## ◆ setOptimizationStrategy()

virtual void Ogre::ConstBufferPool::setOptimizationStrategy | ( | OptimizationStrategy | optimizationStrategy | ) |
| virtual

Sets the optimization strategy.

See OptimizationStrategy.

Remarks
  Changing the optimization strategy on the fly will trigger a massive shader recompilation.

  Implementations that don't support different strategies can overload this function.

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

- OgreConstBufferPool.h