Pioneer
RendererDummy.h
Go to the documentation of this file.
1 // Copyright © 2008-2023 Pioneer Developers. See AUTHORS.txt for details
2 // Licensed under the terms of the GPL v3. See licenses/GPL-3.txt
3 
4 #pragma once
5 
6 #include "graphics/Types.h"
7 #ifndef _RENDERER_DUMMY_H
8 #define _RENDERER_DUMMY_H
9 
10 #include "graphics/RenderState.h"
11 #include "graphics/Renderer.h"
12 #include "graphics/VertexArray.h"
13 #include "graphics/VertexBuffer.h"
19 
20 namespace Graphics {
21 
22  class RendererDummy : public Renderer {
23  public:
24  static void RegisterRenderer();
25 
27  Renderer(0, 0, 0),
28  m_identity(matrix4x4f::Identity())
29  {}
30 
31  virtual const char *GetName() const override final { return "Dummy"; }
32  virtual RendererType GetRendererType() const override final { return RENDERER_DUMMY; }
33  virtual bool SupportsInstancing() override final { return false; }
34  virtual int GetMaximumNumberAASamples() const override final { return 0; }
35  virtual bool GetNearFarRange(float &near_, float &far_) const override final { return true; }
36 
37  virtual bool BeginFrame() override final { return true; }
38  virtual bool EndFrame() override final { return true; }
39  virtual bool SwapBuffers() override final { return true; }
40 
41  virtual bool SetRenderTarget(RenderTarget *) override final { return true; }
42  virtual bool SetScissor(ViewportExtents ext) override final { return true; }
43 
44  virtual bool ClearScreen() override final { return true; }
45  virtual bool ClearDepthBuffer() override final { return true; }
46  virtual bool SetClearColor(const Color &c) override final { return true; }
47 
48  virtual bool SetViewport(ViewportExtents v) override final { return true; }
49  virtual ViewportExtents GetViewport() const override final { return {}; }
50 
51  virtual bool SetTransform(const matrix4x4f &m) override final { return true; }
52  virtual matrix4x4f GetTransform() const override final { return matrix4x4f::Identity(); }
53  virtual bool SetPerspectiveProjection(float fov, float aspect, float near_, float far_) override final { return true; }
54  virtual bool SetOrthographicProjection(float xmin, float xmax, float ymin, float ymax, float zmin, float zmax) override final { return true; }
55  virtual bool SetProjection(const matrix4x4f &m) override final { return true; }
56  virtual matrix4x4f GetProjection() const override final { return matrix4x4f::Identity(); }
57 
58  virtual bool SetWireFrameMode(bool enabled) override final { return true; }
59 
60  virtual bool SetLightIntensity(Uint32, const float *) override final { return true; }
61  virtual bool SetLights(Uint32 numlights, const Light *l) override final { return true; }
62  virtual Uint32 GetNumLights() const override final { return 1; }
63  virtual bool SetAmbientColor(const Color &c) override final { return true; }
64 
65  virtual bool FlushCommandBuffers() override final { return true; }
66 
67  virtual bool DrawBuffer(const VertexArray *, Material *) override final { return true; }
68  virtual bool DrawBufferDynamic(VertexBuffer *, uint32_t, IndexBuffer *, uint32_t, uint32_t, Material *) override final { return true; }
69  virtual bool DrawMesh(MeshObject *, Material *) override final { return true; }
70  virtual bool DrawMeshInstanced(MeshObject *, Material *, InstanceBuffer *) override final { return true; }
71 
72  virtual Material *CreateMaterial(const std::string &s, const MaterialDescriptor &d, const RenderStateDesc &rsd) override final { return new Graphics::Dummy::Material(rsd); }
73  virtual Material *CloneMaterial(const Material *m, const MaterialDescriptor &d, const RenderStateDesc &rsd) override final { return new Graphics::Dummy::Material(rsd); }
74  virtual Texture *CreateTexture(const TextureDescriptor &d) override final { return new Graphics::TextureDummy(d); }
75  virtual RenderTarget *CreateRenderTarget(const RenderTargetDesc &d) override final { return new Graphics::Dummy::RenderTarget(d); }
76  virtual VertexBuffer *CreateVertexBuffer(const VertexBufferDesc &d) override final { return new Graphics::Dummy::VertexBuffer(d); }
77  virtual IndexBuffer *CreateIndexBuffer(Uint32 size, BufferUsage bu, IndexBufferSize el) override final { return new Graphics::Dummy::IndexBuffer(size, bu, el); }
78  virtual InstanceBuffer *CreateInstanceBuffer(Uint32 size, BufferUsage bu) override final { return new Graphics::Dummy::InstanceBuffer(size, bu); }
79  virtual UniformBuffer *CreateUniformBuffer(Uint32 size, BufferUsage bu) override final { return new Graphics::Dummy::UniformBuffer(size, bu); }
80  virtual MeshObject *CreateMeshObject(VertexBuffer *v, IndexBuffer *i) override final { return new Graphics::Dummy::MeshObject(static_cast<Dummy::VertexBuffer *>(v), static_cast<Dummy::IndexBuffer *>(i)); }
82  {
83  auto desc = Graphics::VertexBufferDesc::FromAttribSet(v->GetAttributeSet());
84  desc.numVertices = v->GetNumVerts();
85  return new Graphics::Dummy::MeshObject(static_cast<Dummy::VertexBuffer *>(CreateVertexBuffer(desc)), static_cast<Dummy::IndexBuffer *>(i));
86  }
87 
88  virtual const RenderStateDesc &GetMaterialRenderState(const Graphics::Material *m) override final { return static_cast<const Dummy::Material *>(m)->rsd; }
89 
90  virtual bool ReloadShaders() override final { return true; }
91 
92  protected:
93  virtual void PushState() override final {}
94  virtual void PopState() override final {}
95 
96  private:
97  const matrix4x4f m_identity;
98  };
99 
100 } // namespace Graphics
101 
102 #endif
Definition: VertexBufferDummy.h:41
Definition: VertexBufferDummy.h:67
Definition: MaterialDummy.h:19
Definition: VertexBufferDummy.h:87
Definition: RenderTargetDummy.h:15
Definition: UniformBufferDummy.h:14
Definition: VertexBufferDummy.h:16
Definition: VertexBuffer.h:102
Definition: VertexBuffer.h:127
Definition: Light.h:14
Definition: Material.h:60
Definition: Material.h:148
Definition: VertexBuffer.h:156
Definition: RenderTarget.h:38
Definition: RendererDummy.h:22
virtual Material * CloneMaterial(const Material *m, const MaterialDescriptor &d, const RenderStateDesc &rsd) override final
Definition: RendererDummy.h:73
virtual MeshObject * CreateMeshObjectFromArray(const VertexArray *v, IndexBuffer *i=nullptr, BufferUsage=BUFFER_USAGE_STATIC) override final
Definition: RendererDummy.h:81
virtual int GetMaximumNumberAASamples() const override final
Definition: RendererDummy.h:34
virtual InstanceBuffer * CreateInstanceBuffer(Uint32 size, BufferUsage bu) override final
Definition: RendererDummy.h:78
virtual bool SetWireFrameMode(bool enabled) override final
Definition: RendererDummy.h:58
virtual bool SupportsInstancing() override final
Definition: RendererDummy.h:33
virtual matrix4x4f GetProjection() const override final
Definition: RendererDummy.h:56
virtual bool SetProjection(const matrix4x4f &m) override final
Definition: RendererDummy.h:55
virtual MeshObject * CreateMeshObject(VertexBuffer *v, IndexBuffer *i) override final
Definition: RendererDummy.h:80
virtual bool EndFrame() override final
Definition: RendererDummy.h:38
virtual bool SetRenderTarget(RenderTarget *) override final
Definition: RendererDummy.h:41
virtual IndexBuffer * CreateIndexBuffer(Uint32 size, BufferUsage bu, IndexBufferSize el) override final
Definition: RendererDummy.h:77
RendererDummy()
Definition: RendererDummy.h:26
virtual ViewportExtents GetViewport() const override final
Definition: RendererDummy.h:49
virtual Material * CreateMaterial(const std::string &s, const MaterialDescriptor &d, const RenderStateDesc &rsd) override final
Definition: RendererDummy.h:72
virtual bool GetNearFarRange(float &near_, float &far_) const override final
Definition: RendererDummy.h:35
virtual bool SetClearColor(const Color &c) override final
Definition: RendererDummy.h:46
virtual bool FlushCommandBuffers() override final
Definition: RendererDummy.h:65
virtual const char * GetName() const override final
Definition: RendererDummy.h:31
virtual bool DrawMeshInstanced(MeshObject *, Material *, InstanceBuffer *) override final
Definition: RendererDummy.h:70
virtual bool SetScissor(ViewportExtents ext) override final
Definition: RendererDummy.h:42
virtual matrix4x4f GetTransform() const override final
Definition: RendererDummy.h:52
virtual bool SwapBuffers() override final
Definition: RendererDummy.h:39
virtual void PushState() override final
Definition: RendererDummy.h:93
virtual void PopState() override final
Definition: RendererDummy.h:94
virtual bool DrawBufferDynamic(VertexBuffer *, uint32_t, IndexBuffer *, uint32_t, uint32_t, Material *) override final
Definition: RendererDummy.h:68
virtual UniformBuffer * CreateUniformBuffer(Uint32 size, BufferUsage bu) override final
Definition: RendererDummy.h:79
virtual bool ClearDepthBuffer() override final
Definition: RendererDummy.h:45
virtual bool BeginFrame() override final
Definition: RendererDummy.h:37
virtual const RenderStateDesc & GetMaterialRenderState(const Graphics::Material *m) override final
Definition: RendererDummy.h:88
virtual RenderTarget * CreateRenderTarget(const RenderTargetDesc &d) override final
Definition: RendererDummy.h:75
virtual bool DrawBuffer(const VertexArray *, Material *) override final
Definition: RendererDummy.h:67
virtual bool SetPerspectiveProjection(float fov, float aspect, float near_, float far_) override final
Definition: RendererDummy.h:53
virtual bool SetTransform(const matrix4x4f &m) override final
Definition: RendererDummy.h:51
virtual VertexBuffer * CreateVertexBuffer(const VertexBufferDesc &d) override final
Definition: RendererDummy.h:76
virtual bool SetOrthographicProjection(float xmin, float xmax, float ymin, float ymax, float zmin, float zmax) override final
Definition: RendererDummy.h:54
virtual bool SetAmbientColor(const Color &c) override final
Definition: RendererDummy.h:63
virtual RendererType GetRendererType() const override final
Definition: RendererDummy.h:32
virtual Texture * CreateTexture(const TextureDescriptor &d) override final
Definition: RendererDummy.h:74
static void RegisterRenderer()
Definition: RendererDummy.cpp:13
virtual Uint32 GetNumLights() const override final
Definition: RendererDummy.h:62
virtual bool SetLights(Uint32 numlights, const Light *l) override final
Definition: RendererDummy.h:61
virtual bool SetLightIntensity(Uint32, const float *) override final
Definition: RendererDummy.h:60
virtual bool DrawMesh(MeshObject *, Material *) override final
Definition: RendererDummy.h:69
virtual bool ReloadShaders() override final
Definition: RendererDummy.h:90
virtual bool SetViewport(ViewportExtents v) override final
Definition: RendererDummy.h:48
virtual bool ClearScreen() override final
Definition: RendererDummy.h:44
Definition: Renderer.h:44
Definition: Texture.h:54
Definition: TextureDummy.h:11
Definition: Texture.h:106
Definition: UniformBuffer.h:11
Definition: VertexArray.h:19
Definition: VertexBuffer.h:65
static matrix4x4 Identity()
Definition: matrix4x4.h:106
Definition: Background.h:14
RendererType
Definition: Graphics.h:18
@ RENDERER_DUMMY
Definition: Graphics.h:19
IndexBufferSize
Definition: Types.h:76
BufferUsage
Definition: Types.h:65
@ BUFFER_USAGE_STATIC
Definition: Types.h:66
Definition: Color.h:66
Definition: RenderState.h:10
Definition: RenderTarget.h:20
Definition: VertexBuffer.h:43
static VertexBufferDesc FromAttribSet(AttributeSet set)
Definition: VertexBuffer.cpp:44
Definition: Graphics.h:59