Vesper 0.5.1
Vesper is short form for the Latin word for "Bat", as Vesper is designed to be small, lightweight, and easily handle things like particles and flocking behaviors in accordance with the nature of bats. \n It is meant to be a particle simulation, VFX editor, and CAN be used secondarily as a small game engine.
GitHub | Vesper Updates | Creator
Loading...
Searching...
No Matches
OpenGLShader.h
Go to the documentation of this file.
1#pragma once
2
3#include "Vesper/Renderer/Shader.h"
4#include <glm/glm.hpp>
5
6// TODO: Remove this
7typedef unsigned int GLenum;
8
9namespace Vesper {
10
11 class OpenGLShader : public Shader
12 {
13 public:
14 OpenGLShader(const std::string& filepath);
15 OpenGLShader(const std::string& name, const std::string& vertexSrc, const std::string& fragmentSrc);
16 ~OpenGLShader();
17
18 void Bind() const override;
19 void Unbind() const override;
20
21 virtual void SetMat4(const std::string& name, const glm::mat4& value) override;
22 virtual void SetFloat4(const std::string& name, const glm::vec4& value) override;
23 virtual void SetFloat3(const std::string& name, const glm::vec3& value) override;
24 virtual void SetFloat(const std::string& name, float value) override;
25 virtual void SetInt(const std::string& name, int value) override;
26 virtual void SetIntArray(const std::string& name, int* values, uint32_t count) override;
27
28 virtual const std::string& GetName() const override { return m_Name; }
29
30 void UploadUniformMat4(const std::string& name, const glm::mat4& matrix);
31 void UploadUniformMat3(const std::string& name, const glm::mat3& matrix);
32
33 void UploadUniformFloat4(const std::string& name, const glm::vec4& values);
34 void UploadUniformFloat3(const std::string& name, const glm::vec3& values);
35 void UploadUniformFloat2(const std::string& name, const glm::vec2& values);
36 void UploadUniformFloat(const std::string& name, float value);
37
38 void UploadUniformInt(const std::string& name, int value);
39
40 private:
41 std::string ReadFile(const std::string& filepath);
43 void Compile(std::unordered_map<GLenum, std::string>& shaderSources);
44 private:
45 unsigned int m_RendererID;
46 std::string m_Name;
47 };
48}
#define VZ_CORE_ASSERT(x,...)
Definition Asserts.h:20
#define VZ_PROFILE_FUNCTION()
Definition Instrumentor.h:240
#define VZ_CORE_ERROR(...)
error: indicates an error that has occurred
Definition Log.h:41
unsigned int GLenum
Definition OpenGLShader.h:7
Definition OpenGLShader.h:12
~OpenGLShader()
Definition OpenGLShader.cpp:46
OpenGLShader(const std::string &filepath)
Definition OpenGLShader.cpp:21
virtual const std::string & GetName() const override
Definition OpenGLShader.h:28
OpenGLShader(const std::string &name, const std::string &vertexSrc, const std::string &fragmentSrc)
Definition OpenGLShader.cpp:36
virtual void SetIntArray(const std::string &name, int *values, uint32_t count) override
Sets an array of integers uniform in the shader.
Definition OpenGLShader.cpp:212
void UploadUniformFloat(const std::string &name, float value)
Definition OpenGLShader.cpp:256
void Bind() const override
connects the shader program for use.
Definition OpenGLShader.cpp:175
void UploadUniformMat3(const std::string &name, const glm::mat3 &matrix)
Definition OpenGLShader.cpp:232
void Compile(std::unordered_map< GLenum, std::string > &shaderSources)
Definition OpenGLShader.cpp:98
virtual void SetInt(const std::string &name, int value) override
Sets a single integer uniform in the shader.
Definition OpenGLShader.cpp:206
virtual void SetMat4(const std::string &name, const glm::mat4 &value) override
Sets a 4x4 matrix uniform in the shader.
Definition OpenGLShader.cpp:219
virtual void SetFloat(const std::string &name, float value) override
Sets a single float uniform in the shader.
Definition OpenGLShader.cpp:200
virtual void SetFloat3(const std::string &name, const glm::vec3 &value) override
Sets a 3-component float vector uniform in the shader.
Definition OpenGLShader.cpp:194
unsigned int m_RendererID
Definition OpenGLShader.h:45
virtual void SetFloat4(const std::string &name, const glm::vec4 &value) override
Sets a 4-component float vector uniform in the shader.
Definition OpenGLShader.cpp:188
void Unbind() const override
disconnects the shader program.
Definition OpenGLShader.cpp:181
void UploadUniformFloat4(const std::string &name, const glm::vec4 &values)
Definition OpenGLShader.cpp:238
void UploadUniformFloat2(const std::string &name, const glm::vec2 &values)
Definition OpenGLShader.cpp:250
void UploadUniformMat4(const std::string &name, const glm::mat4 &matrix)
Definition OpenGLShader.cpp:226
void UploadUniformInt(const std::string &name, int value)
Definition OpenGLShader.cpp:262
std::string ReadFile(const std::string &filepath)
Definition OpenGLShader.cpp:52
void UploadUniformFloat3(const std::string &name, const glm::vec3 &values)
Definition OpenGLShader.cpp:244
std::unordered_map< GLenum, std::string > PreProcess(const std::string &source)
Definition OpenGLShader.cpp:72
std::string m_Name
Definition OpenGLShader.h:46
An abstraction for a shader program.
Definition Shader.h:12
TEMPORARY.
Definition WindowsInput.cpp:7
static GLenum ShaderTypeFromString(const std::string &type)
Definition OpenGLShader.cpp:10