Graphics v0.0.0
A simple abstraction layer for the modern graphics APIs.
载入中...
搜索中...
未找到
GLProgram.h
1// Copyright 2022 ShenMian
2// License(Apache-2.0)
3
4#pragma once
5
6#include "Program.h"
7#include <glad/glad.h>
8#include <unordered_map>
9
10class Shader;
11
12class GLProgram : public Program
13{
14public:
15 GLProgram(const Descriptor& desc);
16 virtual ~GLProgram();
17
18 void use() override;
19
20 void set_uniform(const std::string& name, int value) override;
21 void set_uniform(const std::string& name, float value) override;
22 void set_uniform(const std::string& name, const Vector2& value) override;
23 void set_uniform(const std::string& name, const Vector3& value) override;
24 void set_uniform(const std::string& name, const Vector4& value) override;
25 void set_uniform(const std::string& name, const Matrix4& value) override;
26
27 operator GLuint() const noexcept;
28
29private:
37 int get_uniform_buffer_location(const std::string& name) const;
38
49 int get_uniform_location(const std::string& name) const;
50
51 void attach(const std::shared_ptr<Shader> shader);
52 void detach(const std::shared_ptr<Shader> shader);
53 void link();
54
55 GLuint handle_;
56 mutable std::unordered_map<std::string, int> uniform_location_cache_;
57};
Definition: GLProgram.h:13
着色器程序.
Definition: Program.h:21
着色器阶段.
Definition: Shader.h:20
Definition: Program.h:62