对 GLSL Shader 的简单封装。
更多...
#include <shader.hpp>
|
| 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 |
|
|
std::shared_ptr< spdlog::logger > | logger |
|
std::unique_ptr< char[]> | vertex_shader_source |
|
std::unique_ptr< char[]> | fragment_shader_source |
|
对 GLSL Shader 的简单封装。
一个 Shade 对象在构造时并不直接加载 GLSL 代码,正确的使用顺序是:
- 调用
load_vertex_shader
- 调用
load_fragment_shader
- 调用
compile
编译 Shader
- 前三个步骤都返回
true
的前提下,调用 use
使用 Shader
◆ set_uniform()
template<typename T>
bool Shader::set_uniform |
( |
const char * | name, |
|
|
const T & | value ) const |
设置 shader 中指定的 uniform。这个函数只在 cpp 文件中特化,传入不支持的类型会在编译期报错。
- 模板参数
-
- 参数
-
name | uniform 的名称 |
value | CPU 端准备好的值 |
- 返回
- 是否设置成功
该类的文档由以下文件生成: