kodi
RPRendererOpenGLES.h
1 /*
2  * Copyright (C) 2017-2018 Team Kodi
3  * This file is part of Kodi - https://kodi.tv
4  *
5  * SPDX-License-Identifier: GPL-2.0-or-later
6  * See LICENSES/README.md for more information.
7  */
8 
9 #pragma once
10 
11 #include "RPBaseRenderer.h"
12 #include "cores/GameSettings.h"
13 #include "cores/RetroPlayer/buffers/BaseRenderBufferPool.h"
14 #include "cores/RetroPlayer/buffers/video/RenderBufferSysMem.h"
15 #include "cores/RetroPlayer/process/RPProcessInfo.h"
16 
17 #include <atomic>
18 #include <stdint.h>
19 #include <vector>
20 
21 #include "system_gl.h"
22 
23 namespace KODI
24 {
25 namespace RETRO
26 {
28 {
29 public:
30  ~CRendererFactoryOpenGLES() override = default;
31 
32  // implementation of IRendererFactory
33  std::string RenderSystemName() const override;
35  CRenderContext& context,
36  std::shared_ptr<IRenderBufferPool> bufferPool) override;
37  RenderBufferPoolVector CreateBufferPools(CRenderContext& context) override;
38 };
39 
41 {
42 public:
43  CRPRendererOpenGLES(const CRenderSettings& renderSettings,
44  CRenderContext& context,
45  std::shared_ptr<IRenderBufferPool> bufferPool);
46  ~CRPRendererOpenGLES() override;
47 
48  // implementation of CRPBaseRenderer
49  bool Supports(RENDERFEATURE feature) const override;
50  SCALINGMETHOD GetDefaultScalingMethod() const override { return SCALINGMETHOD::NEAREST; }
51 
52  static bool SupportsScalingMethod(SCALINGMETHOD method);
53 
54 protected:
55  // implementation of CRPBaseRenderer
56  void RenderInternal(bool clear, uint8_t alpha) override;
57  void FlushInternal() override;
58 
62  void ClearBackBuffer();
63 
70  void DrawBlackBars();
71 
72  virtual void Render(uint8_t alpha);
73 
74  GLuint m_mainIndexVBO;
75  GLuint m_mainVertexVBO;
76  GLuint m_blackbarsVertexVBO;
77  GLenum m_textureTarget = GL_TEXTURE_2D;
78  float m_clearColour = 0.0f;
79 };
80 } // namespace RETRO
81 } // namespace KODI
Definition: RPRendererOpenGLES.h:40
RenderBufferPoolVector CreateBufferPools(CRenderContext &context) override
Create buffer pools to manager buffers.
Definition: RPRendererOpenGLES.cpp:39
Definition: AudioDecoder.h:18
Rendering factory.
Definition: RPProcessInfo.h:46
std::string RenderSystemName() const override
Get a description name of the rendering system.
Definition: RPRendererOpenGLES.cpp:26
Definition: RenderContext.h:43
Definition: settings.py:1
CRPBaseRenderer * CreateRenderer(const CRenderSettings &settings, CRenderContext &context, std::shared_ptr< IRenderBufferPool > bufferPool) override
Create a renderer.
Definition: RPRendererOpenGLES.cpp:31
Definition: RPRendererOpenGLES.h:27
Definition: RPBaseRenderer.h:32
Definition: RenderSettings.h:17