|
| CRPRenderManager (CRPProcessInfo &processInfo) |
|
| ~CRPRenderManager () override=default |
|
void | Initialize () |
|
void | Deinitialize () |
|
CGUIRenderTargetFactory * | GetGUIRenderTargetFactory () |
| Access the factory for creating GUI render targets.
|
|
AVPixelFormat | GetPixelFormat () const |
|
unsigned int | GetNominalWidth () const |
|
unsigned int | GetNominalHeight () const |
|
unsigned int | GetMaxWidth () const |
|
unsigned int | GetMaxHeight () const |
|
float | GetPixelAspectRatio () const |
|
bool | Configure (AVPixelFormat format, unsigned int nominalWidth, unsigned int nominalHeight, unsigned int maxWidth, unsigned int maxHeight, float pixelAspectRatio) |
|
bool | GetVideoBuffer (unsigned int width, unsigned int height, VideoStreamBuffer &buffer) |
|
void | AddFrame (const uint8_t *data, size_t size, unsigned int width, unsigned int height, unsigned int orientationDegCW) |
|
void | Flush () |
|
void | SetSpeed (double speed) |
|
void | FrameMove () |
|
void | RenderWindow (bool bClear, const RESOLUTION_INFO &coordsRes) override |
| Render a fullscreen window.
|
|
void | RenderControl (bool bClear, bool bUseAlpha, const CRect &renderRegion, const IGUIRenderSettings *renderSettings) override |
| Render a game control.
|
|
void | ClearBackground () override |
| Clear the background of a fullscreen window.
|
|
bool | SupportsRenderFeature (RENDERFEATURE feature) const override |
|
bool | SupportsScalingMethod (SCALINGMETHOD method) const override |
|
void | SaveThumbnail (const std::string &thumbnailPath) |
|
void | CacheVideoFrame (const std::string &savestatePath) |
|
void | SaveVideoFrame (const std::string &savestatePath, ISavestate &savestate) |
|
void | ClearVideoFrame (const std::string &savestatePath) |
|
virtual | ~IRenderManager ()=default |
|
virtual | ~IRenderCallback ()=default |
|
Renders video frames provided by the game loop.
Generally, buffer pools are registered by the windowing subsystem. A buffer pool provides a software or hardware buffer to store the added frame. When RenderManager is created, it instantiates all registered buffer pools.
When a frame arrives, it is copied into a buffer from each buffer pool with a visible renderer. For example, if a GLES and MMAL renderer are both visible in the GUI, then the frame will be copied into two buffers.
When it is time to render the frame, the GUI control or window calls into this class through the IRenderManager interface. RenderManager selects an appropriate renderer to use to render the frame. The renderer is then given the buffer that came from its buffer pool.
Special behavior is needed when the game is paused. As no new frames are delivered, a newly created renderer will stay black. For this scenario, when we detect a pause event, the frame is preemptively cached so that a newly created renderer will have something to display.