6 #include <loader/image/Image.h>
7 #include <math/Color.h>
8 #include <math/Vertex.h>
9 #include "../RenderTypes.h"
17 unsigned int handle = 0;
19 TextureType type = TextureType::TWO_DIMENSIONAL;
21 explicit inline operator bool()
const {
return handle; }
22 inline bool operator!()
const {
return !handle; }
26 unsigned int fboHandle = 0;
27 unsigned int colorHandle = 0;
28 unsigned int rboHandle = 0;
34 explicit inline operator bool()
const {
return fboHandle && colorHandle && (!hasDepth || rboHandle); }
35 inline bool operator!()
const {
return !fboHandle || !colorHandle || (hasDepth && !rboHandle); }
41 explicit inline operator bool()
const {
return handle; }
42 inline bool operator!()
const {
return !handle; }
50 explicit inline operator bool()
const {
return handle && vertex && fragment; }
51 inline bool operator!()
const {
return !handle || !vertex || !fragment; }
55 unsigned int handle = 0;
56 unsigned int bindingPoint = 0;
58 explicit inline operator bool()
const {
return handle; }
59 inline bool operator!()
const {
return !handle; }
63 unsigned int vaoHandle = 0;
64 unsigned int vboHandle = 0;
65 unsigned int eboHandle = 0;
68 explicit inline operator bool()
const {
return vaoHandle && vboHandle && eboHandle; }
69 inline bool operator!()
const {
return !vaoHandle || !vboHandle || !eboHandle; }
72 [[nodiscard]] std::string_view getHumanName();
73 [[nodiscard]]
bool setupForDebugging();
77 [[nodiscard]]
TextureHandle createTexture2D(
const Image& image, WrapMode wrapS, WrapMode wrapT, FilterMode filter,
78 bool genMipmaps, TextureUnit activeTextureUnit);
81 WrapMode wrapS, WrapMode wrapT, WrapMode wrapR, FilterMode filter,
82 bool genMipmaps, TextureUnit activeTextureUnit);
83 void useTexture(
TextureHandle handle, TextureUnit activeTextureUnit);
84 [[nodiscard]]
void* getImGuiTextureHandle(
TextureHandle handle);
87 [[nodiscard]]
FrameBufferHandle createFrameBuffer(
int width,
int height, WrapMode wrapS, WrapMode wrapT, FilterMode filter,
bool hasDepth);
88 void recreateFrameBuffer(
Renderer::FrameBufferHandle* handle,
int width,
int height, WrapMode wrapS, WrapMode wrapT, FilterMode filter,
bool hasDepth);
90 void popFrameBuffer();
91 void useFrameBufferTexture(
const FrameBufferHandle handle, TextureUnit activeTextureUnit);
97 [[nodiscard]]
ShaderHandle createShader(std::string_view vertex, std::string_view fragment);
101 void setShaderUniform1b(
ShaderHandle handle, std::string_view name,
bool value);
102 void setShaderUniform1u(
ShaderHandle handle, std::string_view name,
unsigned int value);
103 void setShaderUniform1i(
ShaderHandle handle, std::string_view name,
int value);
104 void setShaderUniform1f(
ShaderHandle handle, std::string_view name,
float value);
105 void setShaderUniform2b(
ShaderHandle handle, std::string_view name, glm::vec2b value);
106 void setShaderUniform2u(
ShaderHandle handle, std::string_view name, glm::vec2u value);
107 void setShaderUniform2i(
ShaderHandle handle, std::string_view name, glm::vec2i value);
108 void setShaderUniform2f(
ShaderHandle handle, std::string_view name, glm::vec2f value);
109 void setShaderUniform3b(
ShaderHandle handle, std::string_view name, glm::vec3b value);
110 void setShaderUniform3u(
ShaderHandle handle, std::string_view name, glm::vec3u value);
111 void setShaderUniform3i(
ShaderHandle handle, std::string_view name, glm::vec3i value);
112 void setShaderUniform3f(
ShaderHandle handle, std::string_view name, glm::vec3f value);
113 void setShaderUniform4b(
ShaderHandle handle, std::string_view name, glm::vec4b value);
114 void setShaderUniform4u(
ShaderHandle handle, std::string_view name, glm::vec4u value);
115 void setShaderUniform4i(
ShaderHandle handle, std::string_view name, glm::vec4i value);
116 void setShaderUniform4f(
ShaderHandle handle, std::string_view name, glm::vec4f value);
117 void setShaderUniform4m(
ShaderHandle handle, std::string_view name, glm::mat4 value);
121 void updateUniformBuffer(
UniformBufferHandle handle,
const void* buffer, std::ptrdiff_t length);
122 void updateUniformBufferPart(
UniformBufferHandle handle, std::ptrdiff_t start,
const void* buffer, std::ptrdiff_t length);
125 [[nodiscard]]
MeshHandle createMesh(
const std::vector<Vertex>& vertices,
const std::vector<Index>& indices, MeshDrawMode drawMode);
126 void updateMesh(
MeshHandle* handle,
const std::vector<Vertex>& vertices,
const std::vector<Index>& indices, MeshDrawMode drawMode);
127 void drawMesh(
MeshHandle handle, MeshDepthFunction depthFunction, MeshCullType cullType);
130 void initImGui(SDL_Window* window,
void* context);
131 void startImGuiFrame();
132 void endImGuiFrame();