![]() |
Dandelion 2.0.0
A light-weight 3D builder for educational usage
|
#include <shader.hpp>
Public 成员函数 | |
| Shader (const std::shared_ptr< spdlog::logger > &logger) | |
| bool | load_vertex_shader (const char *file_path) |
| bool | load_fragment_shader (const char *file_path) |
| bool | compile () |
| void | use () const |
| template<typename T> | |
| bool | set_uniform (const char *name, const T &value) const |
| template<> | |
| bool | set_uniform (const char *name, const bool &value) const |
| template<> | |
| bool | set_uniform (const char *name, const float &value) const |
| template<> | |
| bool | set_uniform (const char *name, const Vector3f &value) const |
| template<> | |
| bool | set_uniform (const char *name, const Matrix4f &value) const |
Public 属性 | |
| unsigned int | id |
Private 属性 | |
| std::shared_ptr< spdlog::logger > | logger |
| std::unique_ptr< char[]> | vertex_shader_source |
| std::unique_ptr< char[]> | fragment_shader_source |
对 GLSL Shader 的简单封装。
一个 Shade 对象在构造时并不直接加载 GLSL 代码,正确的使用顺序是:
| bool Shader::set_uniform | ( | const char * | name, |
| const T & | value ) const |
设置 shader 中指定的 uniform。这个函数只在 cpp 文件中特化,传入不支持的类型会在编译期报错。
| T | CPU 端的变量类型 |
| name | uniform 的名称 |
| value | CPU 端准备好的值 |