OGL Engine 1.2.0-dev
|
La classe Material définit un "material" graphique utilisé pour le rendu de meshes texturés. More...
#include <material.hpp>
Public Member Functions | |
Material (Texture *texture=Defaults::texture, Shader *shader=Defaults::shader) | |
Construit un nouveau Material. | |
void | SetUniform (const std::string &name, const UniformValue &value) |
Enregistre un uniform dans le tableau interne du material. | |
UniformValue | GetUniform (const std::string &name) const |
Renvoie la valeur d'un uniforme stockée dans le material. | |
void | Bind () const |
Permet de lier le Material courant et de setup les uniforms avant un drawcall. |
Public Attributes | |
Shader * | shader |
Pointeur vers un objet Shader préalablement compilé | |
Texture * | texture |
Pointeur vers un objet Texture (peut être nullptr) | |
glm::vec4 | color = {1.0f, 1.0f, 1.0f, 1.0f} |
La couleur du Material (automatiquement envoyée à l'uniform u_Color, peut être utilisée par les shaders) |
La classe Material définit un "material" graphique utilisé pour le rendu de meshes texturés.
Un Material doit nécessairement avoir un Shader associé pour le rendu. Il peut avoir une texture aussi. En plus de cela, le Material possède une "color" (qui peut être utilisée pour un rendu flat si pas de texture ou en mix avec la texture)
Engine::Graphics::Material::Material | ( | Texture * | texture = Defaults::texture, |
Shader * | shader = Defaults::shader ) |
Construit un nouveau Material.
texture | La texture à utiliser (charger au préalable et gérer la mémoire) |
shader | Le shader à utiliser (charger au préalable, et gérer la mémoire) |
void Engine::Graphics::Material::Bind | ( | ) | const |
Permet de lier le Material courant et de setup les uniforms avant un drawcall.
UniformValue Engine::Graphics::Material::GetUniform | ( | const std::string & | name | ) | const |
void Engine::Graphics::Material::SetUniform | ( | const std::string & | name, |
const UniformValue & | value ) |
Enregistre un uniform dans le tableau interne du material.
A chaque "Bind()", les uniforms stockés sont envoyés dans le Shader. Cela permet de rendre les Shader particulièrement customisables, sans pour autant mettre les mains dans le code des renderers puisuqe le binding à lieu ici.
name | Le nom de l'uniform (doit matcher avec le nom utilisé dans le shader) |
value | La valeur à enregistrer (doit faire partie de UniformValue) |
glm::vec4 Engine::Graphics::Material::color = {1.0f, 1.0f, 1.0f, 1.0f} |
La couleur du Material (automatiquement envoyée à l'uniform u_Color, peut être utilisée par les shaders)