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.