Reestructura carpetes: src->source, third_party->source/external, shaders->data/shaders
This commit is contained in:
40
source/rendering/opengl_shader_backend.hpp
Normal file
40
source/rendering/opengl_shader_backend.hpp
Normal file
@@ -0,0 +1,40 @@
|
||||
#pragma once
|
||||
|
||||
#include <glad/glad.h>
|
||||
|
||||
#include "rendering/shader_backend.hpp"
|
||||
|
||||
namespace Rendering {
|
||||
|
||||
class OpenGLShaderBackend final : public IShaderBackend {
|
||||
public:
|
||||
OpenGLShaderBackend() = default;
|
||||
~OpenGLShaderBackend() override;
|
||||
|
||||
auto init(SDL_Window* window) -> bool override;
|
||||
auto loadShader(const ShaderProgramSpec& spec) -> bool override;
|
||||
void render(const ShaderUniforms& uniforms) override;
|
||||
void setVSync(bool vsync) override;
|
||||
void cleanup() override;
|
||||
[[nodiscard]] auto driverName() const -> std::string override { return "OpenGL"; }
|
||||
|
||||
private:
|
||||
auto createFeedbackFBO(int width, int height) -> bool;
|
||||
void destroyFeedbackFBO();
|
||||
|
||||
SDL_Window* window_{nullptr};
|
||||
SDL_GLContext gl_context_{nullptr};
|
||||
|
||||
GLuint vao_{0};
|
||||
GLuint vbo_{0};
|
||||
GLuint current_program_{0};
|
||||
|
||||
GLuint feedback_fbo_{0};
|
||||
GLuint feedback_texture_{0};
|
||||
bool current_shader_uses_feedback_{false};
|
||||
int feedback_channel_{-1};
|
||||
int feedback_width_{0};
|
||||
int feedback_height_{0};
|
||||
};
|
||||
|
||||
} // namespace Rendering
|
||||
Reference in New Issue
Block a user