Grindstone Game Engine
v0.2.0
An open source game engine and toolkit.
Toggle main menu visibility
Loading...
Searching...
No Matches
GLCore.hpp
1
#pragma once
2
3
#define NOMINMAX
4
#include <GL/gl3w.h>
5
#include <vector>
6
#include <unordered_map>
7
8
#include <Common/Graphics/Core.hpp>
9
#include <Common/Graphics/DLLDefs.hpp>
10
11
namespace
Grindstone::GraphicsAPI::OpenGL
{
12
class
Core
:
public
Grindstone::GraphicsAPI::Core
{
13
public
:
14
virtual
bool
Initialize(
const
CreateInfo
& createInfo)
override
;
15
virtual
void
Clear(ClearMode mask,
float
clear_color[4],
float
clear_depth, uint32_t clear_stencil)
override
;
16
virtual
void
AdjustPerspective(
float
*perspective)
override
;
17
virtual
void
RegisterWindow(
Window
* window)
override
;
18
19
virtual
const
char
* GetVendorName()
const override
;
20
virtual
const
char
* GetAdapterName()
const override
;
21
virtual
const
char
* GetAPIName()
const override
;
22
virtual
const
char
* GetAPIVersion()
const override
;
23
virtual
const
char
* GetDefaultShaderExtension()
const override
;
24
25
virtual
void
DeleteFramebuffer(
Grindstone::GraphicsAPI::Framebuffer
*ptr)
override
;
26
virtual
void
DeleteBuffer(
Grindstone::GraphicsAPI::Buffer
*ptr)
override
;
27
virtual
void
DeleteGraphicsPipeline(
Grindstone::GraphicsAPI::GraphicsPipeline
* ptr)
override
;
28
virtual
void
DeleteComputePipeline(
Grindstone::GraphicsAPI::ComputePipeline
* ptr)
override
;
29
virtual
void
DeleteRenderPass(
Grindstone::GraphicsAPI::RenderPass
*ptr)
override
;
30
virtual
void
DeleteSampler(
Grindstone::GraphicsAPI::Sampler
* ptr)
override
;
31
virtual
void
DeleteImage(
Grindstone::GraphicsAPI::Image
* ptr)
override
;
32
virtual
void
DeleteDescriptorSet(
Grindstone::GraphicsAPI::DescriptorSet
*ptr)
override
;
33
virtual
void
DeleteDescriptorSetLayout(
Grindstone::GraphicsAPI::DescriptorSetLayout
*ptr)
override
;
34
virtual
void
DeleteCommandBuffer(
Grindstone::GraphicsAPI::CommandBuffer
* ptr)
override
;
35
virtual
void
DeleteVertexArrayObject(
Grindstone::GraphicsAPI::VertexArrayObject
*ptr)
override
;
36
37
virtual
Grindstone::GraphicsAPI::Framebuffer
* CreateFramebuffer(
const
Framebuffer::CreateInfo
& ci)
override
;
38
virtual
Grindstone::GraphicsAPI::RenderPass
* CreateRenderPass(
const
RenderPass::CreateInfo
& ci)
override
;
39
virtual
Grindstone::GraphicsAPI::GraphicsPipeline
* CreateGraphicsPipeline(
const
GraphicsPipeline::CreateInfo
& ci)
override
;
40
virtual
Grindstone::GraphicsAPI::ComputePipeline
* CreateComputePipeline(
const
ComputePipeline::CreateInfo
& ci)
override
;
41
virtual
Grindstone::GraphicsAPI::CommandBuffer
* CreateCommandBuffer(
const
CommandBuffer::CreateInfo
& ci)
override
;
42
virtual
Grindstone::GraphicsAPI::VertexArrayObject
* CreateVertexArrayObject(
const
VertexArrayObject::CreateInfo
& gp)
override
;
43
virtual
Grindstone::GraphicsAPI::Buffer
* CreateBuffer(
const
Buffer::CreateInfo
& ci)
override
;
44
virtual
Grindstone::GraphicsAPI::Sampler
* CreateSampler(
const
Sampler::CreateInfo
& createInfo)
override
;
45
virtual
Grindstone::GraphicsAPI::Image
* CreateImage(
const
Image::CreateInfo
& createInfo)
override
;
46
virtual
Grindstone::GraphicsAPI::DescriptorSet
* CreateDescriptorSet(
const
DescriptorSet::CreateInfo
& createInfo)
override
;
47
virtual
Grindstone::GraphicsAPI::DescriptorSetLayout
* CreateDescriptorSetLayout(
const
DescriptorSetLayout::CreateInfo
& createInfo)
override
;
48
49
virtual
Grindstone::GraphicsAPI::GraphicsPipeline
* GetOrCreateGraphicsPipelineFromCache(
const
GraphicsPipeline::PipelineData
& pipelineData,
const
VertexInputLayout
* vertexInputLayout)
override
;
50
51
virtual
void
CopyDepthBufferFromReadToWrite(uint32_t srcWidth, uint32_t srcHeight, uint32_t dstWidth, uint32_t dstHeight)
override
;
52
53
virtual
bool
ShouldUseImmediateMode()
const override
;
54
virtual
bool
SupportsCommandBuffers()
const override
;
55
virtual
bool
SupportsTesselation()
const override
;
56
virtual
bool
SupportsGeometryShader()
const override
;
57
virtual
bool
SupportsComputeShader()
const override
;
58
virtual
bool
SupportsMultiDrawIndirect()
const override
;
59
60
virtual
void
WaitUntilIdle()
override
;
61
62
virtual
void
BindGraphicsPipeline(
Grindstone::GraphicsAPI::GraphicsPipeline
* pipeline)
override
;
63
virtual
void
BindVertexArrayObject(
Grindstone::GraphicsAPI::VertexArrayObject
*)
override
;
64
virtual
void
DrawImmediateIndexed(GeometryType geom_type,
bool
largeBuffer, int32_t baseVertex, uint32_t indexOffsetPtr, uint32_t indexCount)
override
;
65
virtual
void
DrawImmediateVertices(GeometryType geom_type, uint32_t base, uint32_t count)
override
;
66
virtual
void
SetImmediateBlending(
67
BlendOperation colorOp, BlendFactor colorSrc, BlendFactor colorDst,
68
BlendOperation alphaOp, BlendFactor alphaSrc, BlendFactor alphaDst
69
)
override
;
70
virtual
void
EnableDepthWrite(
bool
state)
override
;
71
virtual
void
BindDefaultFramebuffer()
override
;
72
virtual
void
BindDefaultFramebufferWrite()
override
;
73
virtual
void
BindDefaultFramebufferRead()
override
;
74
virtual
void
SetColorMask(ColorMask mask)
override
;
75
virtual
void
ResizeViewport(uint32_t w, uint32_t h)
override
;
76
private
:
77
std::string vendorName;
78
std::string adapterName;
79
std::string apiVersion;
80
81
Window
* primaryWindow;
82
83
using
PipelineHash = size_t;
84
std::unordered_map<PipelineHash, Grindstone::GraphicsAPI::GraphicsPipeline*> graphicsPipelineCache;
85
};
86
}
Grindstone::GraphicsAPI::Buffer
Definition
Buffer.hpp:49
Grindstone::GraphicsAPI::CommandBuffer
Definition
CommandBuffer.hpp:109
Grindstone::GraphicsAPI::ComputePipeline
Definition
ComputePipeline.hpp:19
Grindstone::GraphicsAPI::Core
Definition
Core.hpp:41
Grindstone::GraphicsAPI::DescriptorSetLayout
Definition
DescriptorSetLayout.hpp:14
Grindstone::GraphicsAPI::DescriptorSet
Definition
DescriptorSet.hpp:15
Grindstone::GraphicsAPI::Framebuffer
Definition
Framebuffer.hpp:16
Grindstone::GraphicsAPI::GraphicsPipeline
Definition
GraphicsPipeline.hpp:20
Grindstone::GraphicsAPI::Image
Definition
Image.hpp:49
Grindstone::GraphicsAPI::OpenGL::Core
Definition
GLCore.hpp:12
Grindstone::GraphicsAPI::RenderPass
Definition
RenderPass.hpp:10
Grindstone::GraphicsAPI::Sampler
Definition
Sampler.hpp:49
Grindstone::GraphicsAPI::VertexArrayObject
Definition
VertexArrayObject.hpp:9
Grindstone::Window
Definition
Window.hpp:12
Grindstone::GraphicsAPI::OpenGL
Definition
GLBuffer.hpp:5
Grindstone::GraphicsAPI::Buffer::CreateInfo
Definition
Buffer.hpp:51
Grindstone::GraphicsAPI::CommandBuffer::CreateInfo
Definition
CommandBuffer.hpp:186
Grindstone::GraphicsAPI::ComputePipeline::CreateInfo
Definition
ComputePipeline.hpp:21
Grindstone::GraphicsAPI::Core::CreateInfo
Definition
Core.hpp:43
Grindstone::GraphicsAPI::DescriptorSetLayout::CreateInfo
Definition
DescriptorSetLayout.hpp:35
Grindstone::GraphicsAPI::DescriptorSet::CreateInfo
Definition
DescriptorSet.hpp:70
Grindstone::GraphicsAPI::Framebuffer::CreateInfo
Definition
Framebuffer.hpp:24
Grindstone::GraphicsAPI::GraphicsPipeline::CreateInfo
Definition
GraphicsPipeline.hpp:132
Grindstone::GraphicsAPI::GraphicsPipeline::PipelineData
Definition
GraphicsPipeline.hpp:53
Grindstone::GraphicsAPI::Image::CreateInfo
Definition
Image.hpp:53
Grindstone::GraphicsAPI::RenderPass::CreateInfo
Definition
RenderPass.hpp:18
Grindstone::GraphicsAPI::Sampler::CreateInfo
Definition
Sampler.hpp:51
Grindstone::GraphicsAPI::VertexArrayObject::CreateInfo
Definition
VertexArrayObject.hpp:11
Grindstone::GraphicsAPI::VertexInputLayout
Definition
Formats.hpp:894
plugins
Grindstone.RHI.OpenGL
include
GLCore.hpp
Generated by
1.17.0