kodi
RPRendererOpenGL.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/RetroPlayer/process/RPProcessInfo.h"
13 
14 #include "system_gl.h"
15 
16 namespace KODI
17 {
18 namespace RETRO
19 {
20 class CRenderContext;
21 
23 {
24 public:
25  ~CRendererFactoryOpenGL() override = default;
26 
27  // implementation of IRendererFactory
28  std::string RenderSystemName() const override;
30  CRenderContext& context,
31  std::shared_ptr<IRenderBufferPool> bufferPool) override;
32  RenderBufferPoolVector CreateBufferPools(CRenderContext& context) override;
33 };
34 
36 {
37 public:
38  CRPRendererOpenGL(const CRenderSettings& renderSettings,
39  CRenderContext& context,
40  std::shared_ptr<IRenderBufferPool> bufferPool);
41  ~CRPRendererOpenGL() override;
42 
43  // implementation of CRPBaseRenderer
44  bool Supports(RENDERFEATURE feature) const override;
45  SCALINGMETHOD GetDefaultScalingMethod() const override { return SCALINGMETHOD::NEAREST; }
46 
47  static bool SupportsScalingMethod(SCALINGMETHOD method);
48 
49 protected:
50  struct PackedVertex
51  {
52  float x, y, z;
53  float u1, v1;
54  };
55  struct Svertex
56  {
57  float x;
58  float y;
59  float z;
60  };
61 
62  // implementation of CRPBaseRenderer
63  void RenderInternal(bool clear, uint8_t alpha) override;
64  void FlushInternal() override;
65 
69  void ClearBackBuffer();
70 
77  void DrawBlackBars();
78 
79  virtual void Render(uint8_t alpha);
80 
81  GLuint m_mainVAO;
82  GLuint m_mainVertexVBO;
83  GLuint m_mainIndexVBO;
84 
85  GLuint m_blackbarsVAO;
86  GLuint m_blackbarsVertexVBO;
87 
88  GLenum m_textureTarget = GL_TEXTURE_2D;
89  float m_clearColour = 0.0f;
90 };
91 } // namespace RETRO
92 } // namespace KODI
RenderBufferPoolVector CreateBufferPools(CRenderContext &context) override
Create buffer pools to manager buffers.
Definition: RPRendererOpenGL.cpp:37
CRPBaseRenderer * CreateRenderer(const CRenderSettings &settings, CRenderContext &context, std::shared_ptr< IRenderBufferPool > bufferPool) override
Create a renderer.
Definition: RPRendererOpenGL.cpp:29
Definition: RPRendererOpenGL.h:50
Definition: AudioDecoder.h:18
Rendering factory.
Definition: RPProcessInfo.h:46
Definition: RenderContext.h:43
Definition: settings.py:1
Definition: RPRendererOpenGL.h:55
Definition: RPRendererOpenGL.h:22
std::string RenderSystemName() const override
Get a description name of the rendering system.
Definition: RPRendererOpenGL.cpp:24
Definition: RPBaseRenderer.h:32
Definition: RenderSettings.h:17
Definition: RPRendererOpenGL.h:35