Dandelion 1.1.1
A light-weight 3D builder for educational usage
载入中...
搜索中...
未找到
Shader类 参考

对 GLSL Shader 的简单封装。 更多...

#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 代码,正确的使用顺序是:

  1. 调用 load_vertex_shader
  2. 调用 load_fragment_shader
  3. 调用 compile 编译 Shader
  4. 前三个步骤都返回 true 的前提下,调用 use 使用 Shader

成员函数说明

◆ set_uniform()

template<typename T>
bool Shader::set_uniform ( const char * name,
const T & value ) const

设置 shader 中指定的 uniform。这个函数只在 cpp 文件中特化,传入不支持的类型会在编译期报错。

模板参数
TCPU 端的变量类型
参数
nameuniform 的名称
valueCPU 端准备好的值
返回
是否设置成功

该类的文档由以下文件生成: