|
MusicSpectrum
1.0.0
|
#include <shader.hpp>
Membros Públicos | |
| Shader (const std::string &filepath) | |
| ~Shader () | |
| void | bind () const |
| void | unbind () const |
| void | setUniform3f (const std::string &name, glm::vec3 value) |
| void | setUniform4f (const std::string &name, glm::vec4 value) |
| void | setUniformMat4f (const std::string &name, const glm::mat4 &matrix) |
Membros Privados | |
| GLuint | createShader (const std::string &vertex_shader, const std::string &fragment_shader) |
| ShaderProgramSource | parseShader (const std::string &filepath) |
| GLuint | compileShader (GLuint type, const std::string &source) |
| GLint | getUniformLocation (const std::string &name) |
Atributos Privados | |
| GLuint | m_buffer_id |
| std::unordered_map< std::string, GLint > | m_uniformLocationCache |
Classe auxiliar para gerenciamento de programas de shader.
A classe Shader carrega shaders de arquivos externos (vertex shader e fragment shader), compila o programa e fornece métodos para ativação, desativação e configuração de uniformes.
| Shader::Shader | ( | const std::string & | filepath | ) |
Construtor da classe Shader.
Carrega os shaders a partir de um arquivo externo especificado pelo caminho do arquivo, compila o programa de shader e inicializa o cache de localização de uniformes.
filepath: Caminho do arquivo contendo os shaders (vertex e fragment).
| Shader::~Shader | ( | ) |
Destrutor da classe Shader.
Realiza a liberação da memória alocada pelo programa de shader em OpenGL.
| void Shader::bind | ( | ) | const |
Ativa o programa de shader.
Vincula o programa de shader para que ele seja usado para renderização.
|
private |
Compila o código fonte de um shader individual.
type: Tipo de shader (GL_VERTEX_SHADER ou GL_FRAGMENT_SHADER).
source: Código fonte do shader.
Returno: Identificador OpenGL do shader compilado.
|
private |
Cria um shader individual (vertex ou fragment) a partir do código fonte.
type: Tipo de shader (GL_VERTEX_SHADER ou GL_FRAGMENT_SHADER).
source: Código fonte do shader.
Retorno: Identificador OpenGL do shader criado.
|
private |
Obtém a localização de um uniforme no programa de shader.
Essa função verifica se a localização do uniforme já está armazenada no cache m_uniformLocationCache. Se a localização não estiver no cache, ela consulta a OpenGL e armazena o resultado no cache para consultas futuras.
name: Nome do uniforme.
Returno: Localização do uniforme (GLint) ou -1 se o uniforme não for encontrado.
|
private |
Carrega e separa o código fonte dos shaders (vertex e fragment) de um arquivo.
filepath: Caminho do arquivo contendo os shaders.
Returno: Estrutura contendo o código fonte separado para vertex shader e fragment shader.
| void Shader::setUniform3f | ( | const std::string & | name, |
| glm::vec3 | value | ||
| ) |
Define um uniforme do tipo vec3 no programa de shader.
name: Nome do uniforme.
value: Valor do uniforme como um vetor glm::vec3.
| void Shader::setUniform4f | ( | const std::string & | name, |
| glm::vec4 | value | ||
| ) |
Define um uniforme do tipo vec4 no programa de shader.
name: Nome do uniforme.
value: Valor do uniforme como um vetor glm::vec4.
| void Shader::setUniformMat4f | ( | const std::string & | name, |
| const glm::mat4 & | matrix | ||
| ) |
Define um uniforme do tipo mat4 no programa de shader.
name: Nome do uniforme.
matrix: Valor do uniforme como uma matriz glm::mat4.
| void Shader::unbind | ( | ) | const |
|
private |
Identificador OpenGL do programa de shader.
|
private |
Cache para localização de uniformes no programa de shader.
Um mapa que armazena o nome do uniforme como chave e sua localização (GLint) como valor. O cache evita consultas repetidas à OpenGL para recuperar a localização de uniformes.