Forgot to write the shader methods as snake_case
This commit is contained in:
parent
7e0ecda783
commit
d6f251d6b8
|
@ -91,13 +91,20 @@ namespace simpleengine::gfx {
|
||||||
*/
|
*/
|
||||||
static void unuse();
|
static void unuse();
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Attach the shader to a program. No need to call this if its already attached once.
|
||||||
|
*
|
||||||
|
* @param program The program to attach the shader to.
|
||||||
|
*/
|
||||||
|
void attach(std::shared_ptr<GLuint> program);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @brief Get a Uniform Float from the shader using a `location`.
|
* @brief Get a Uniform Float from the shader using a `location`.
|
||||||
*
|
*
|
||||||
* @param location The location of the uniform float.
|
* @param location The location of the uniform float.
|
||||||
* @return GLfloat The value of the uniform float from the shader.
|
* @return GLfloat The value of the uniform float from the shader.
|
||||||
*/
|
*/
|
||||||
GLfloat getUniformFloat(GLint location) const;
|
GLfloat get_uniform_float(GLint location) const;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @brief Get a Uniform Float from the shader finding the location of the uniform using `uniform_name`.
|
* @brief Get a Uniform Float from the shader finding the location of the uniform using `uniform_name`.
|
||||||
|
@ -105,7 +112,7 @@ namespace simpleengine::gfx {
|
||||||
* @param uniform_name The name of the uniform inside of the shader.
|
* @param uniform_name The name of the uniform inside of the shader.
|
||||||
* @return GLfloat The value of the uniform float from the shader.
|
* @return GLfloat The value of the uniform float from the shader.
|
||||||
*/
|
*/
|
||||||
GLfloat getUniformFloat(const char* uniform_name) const;
|
GLfloat get_uniform_float(const char* uniform_name) const;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @brief Get a Uniform integer from the shader using a `location`.
|
* @brief Get a Uniform integer from the shader using a `location`.
|
||||||
|
@ -113,7 +120,7 @@ namespace simpleengine::gfx {
|
||||||
* @param location The location of the uniform integer.
|
* @param location The location of the uniform integer.
|
||||||
* @return GLint The value of the uniform integer from the shader.
|
* @return GLint The value of the uniform integer from the shader.
|
||||||
*/
|
*/
|
||||||
GLint getUniformInt(GLint location) const;
|
GLint get_uniform_int(GLint location) const;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @brief Get a Uniform integer from the shader finding the location of the uniform using `uniform_name`.
|
* @brief Get a Uniform integer from the shader finding the location of the uniform using `uniform_name`.
|
||||||
|
@ -121,7 +128,7 @@ namespace simpleengine::gfx {
|
||||||
* @param uniform_name The name of the uniform inside of the shader.
|
* @param uniform_name The name of the uniform inside of the shader.
|
||||||
* @return GLint The value of the uniform integer from the shader.
|
* @return GLint The value of the uniform integer from the shader.
|
||||||
*/
|
*/
|
||||||
GLint getUniformInt(const char* uniform_name) const;
|
GLint get_uniform_int(const char* uniform_name) const;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @brief Get a Uniform unsigned integer from the shader using a `location`.
|
* @brief Get a Uniform unsigned integer from the shader using a `location`.
|
||||||
|
@ -129,7 +136,7 @@ namespace simpleengine::gfx {
|
||||||
* @param location The location of the uniform unsigned integer.
|
* @param location The location of the uniform unsigned integer.
|
||||||
* @return GLuint The value of the uniform unsigned integer from the shader.
|
* @return GLuint The value of the uniform unsigned integer from the shader.
|
||||||
*/
|
*/
|
||||||
GLuint getUniformUInt(GLint location) const;
|
GLuint get_uniform_uint(GLint location) const;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @brief Get a Uniform unsigned integer from the shader finding the location of the uniform using `uniform_name`.
|
* @brief Get a Uniform unsigned integer from the shader finding the location of the uniform using `uniform_name`.
|
||||||
|
@ -137,7 +144,7 @@ namespace simpleengine::gfx {
|
||||||
* @param uniform_name The name of the uniform inside of the shader.
|
* @param uniform_name The name of the uniform inside of the shader.
|
||||||
* @return GLuint The value of the uniform unsigned integer from the shader.
|
* @return GLuint The value of the uniform unsigned integer from the shader.
|
||||||
*/
|
*/
|
||||||
GLuint getUniformUInt(const char* uniform_name) const;
|
GLuint get_uniform_uint(const char* uniform_name) const;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @brief Get a Uniform double from the shader using a `location`.
|
* @brief Get a Uniform double from the shader using a `location`.
|
||||||
|
@ -145,7 +152,7 @@ namespace simpleengine::gfx {
|
||||||
* @param location The location of the uniform double.
|
* @param location The location of the uniform double.
|
||||||
* @return GLdouble The value of the uniform double from the shader.
|
* @return GLdouble The value of the uniform double from the shader.
|
||||||
*/
|
*/
|
||||||
GLdouble getUniformDouble(GLint location) const;
|
GLdouble get_uniform_double(GLint location) const;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @brief Get a Uniform double from the shader finding the location of the uniform using `uniform_name`.
|
* @brief Get a Uniform double from the shader finding the location of the uniform using `uniform_name`.
|
||||||
|
@ -153,42 +160,42 @@ namespace simpleengine::gfx {
|
||||||
* @param uniform_name The name of the uniform inside of the shader.
|
* @param uniform_name The name of the uniform inside of the shader.
|
||||||
* @return GLdouble The value of the uniform double from the shader.
|
* @return GLdouble The value of the uniform double from the shader.
|
||||||
*/
|
*/
|
||||||
GLdouble getUniformDouble(const char* uniform_name) const;
|
GLdouble get_uniform_double(const char* uniform_name) const;
|
||||||
|
|
||||||
void setUniformFloat(GLint location, GLfloat fl, bool bind_shader = true);
|
void set_uniform_float(GLint location, GLfloat fl, bool bind_shader = true);
|
||||||
void setUniformFloat(const char* uniform_name, GLfloat fl, bool bind_shader = true);
|
void set_uniform_float(const char* uniform_name, GLfloat fl, bool bind_shader = true);
|
||||||
|
|
||||||
void setUniformFloatVec2(GLint location, glm::vec2 vec, bool bind_shader = true);
|
void set_uniform_float_vec2(GLint location, glm::vec2 vec, bool bind_shader = true);
|
||||||
void setUniformFloatVec2(const char* uniform_name, glm::vec2 vec, bool bind_shader = true);
|
void set_uniform_float_vec2(const char* uniform_name, glm::vec2 vec, bool bind_shader = true);
|
||||||
|
|
||||||
void setUniformFloatVec3(GLint location, glm::vec3 vec, bool bind_shader = true);
|
void set_uniform_float_vec3(GLint location, glm::vec3 vec, bool bind_shader = true);
|
||||||
void setUniformFloatVec3(const char* uniform_name, glm::vec3 vec, bool bind_shader = true);
|
void set_uniform_float_vec3(const char* uniform_name, glm::vec3 vec, bool bind_shader = true);
|
||||||
|
|
||||||
void setUniformFloatVec4(GLint location, glm::vec4 vec, bool bind_shader = true);
|
void set_uniform_float_vec4(GLint location, glm::vec4 vec, bool bind_shader = true);
|
||||||
void setUniformFloatVec4(const char* uniform_name, glm::vec4 vec, bool bind_shader = true);
|
void set_uniform_float_vec4(const char* uniform_name, glm::vec4 vec, bool bind_shader = true);
|
||||||
|
|
||||||
void setUniformInt(GLint location, GLint i, bool bind_shader = true);
|
void set_uniform_int(GLint location, GLint i, bool bind_shader = true);
|
||||||
void setUniformInt(const char* uniform_name, GLint i, bool bind_shader = true);
|
void set_uniform_int(const char* uniform_name, GLint i, bool bind_shader = true);
|
||||||
|
|
||||||
void setUniformIntVec2(GLint location, glm::ivec2 vec, bool bind_shader = true);
|
void set_uniform_int_vec2(GLint location, glm::ivec2 vec, bool bind_shader = true);
|
||||||
void setUniformIntVec2(const char* uniform_name, glm::ivec2 vec, bool bind_shader = true);
|
void set_uniform_int_vec2(const char* uniform_name, glm::ivec2 vec, bool bind_shader = true);
|
||||||
|
|
||||||
void setUniformIntVec3(GLint location, glm::ivec3 vec, bool bind_shader = true);
|
void set_uniform_int_vec3(GLint location, glm::ivec3 vec, bool bind_shader = true);
|
||||||
void setUniformIntVec3(const char* uniform_name, glm::ivec3 vec, bool bind_shader = true);
|
void set_uniform_int_vec3(const char* uniform_name, glm::ivec3 vec, bool bind_shader = true);
|
||||||
|
|
||||||
void setUniformIntVec4(GLint location, glm::ivec4 vec, bool bind_shader = true);
|
void set_uniform_int_vec4(GLint location, glm::ivec4 vec, bool bind_shader = true);
|
||||||
void setUniformIntVec4(const char* uniform_name, glm::ivec4 vec, bool bind_shader = true);
|
void set_uniform_int_vec4(const char* uniform_name, glm::ivec4 vec, bool bind_shader = true);
|
||||||
|
|
||||||
void setUniformUInt(GLint location, GLuint ui, bool bind_shader = true);
|
void set_uniform_uint(GLint location, GLuint ui, bool bind_shader = true);
|
||||||
void setUniformUInt(const char* uniform_name, GLuint ui, bool bind_shader = true);
|
void set_uniform_uint(const char* uniform_name, GLuint ui, bool bind_shader = true);
|
||||||
|
|
||||||
void setUniformUIntVec2(GLint location, glm::uvec2 vec, bool bind_shader = true);
|
void set_uniform_uint_vec2(GLint location, glm::uvec2 vec, bool bind_shader = true);
|
||||||
void setUniformUIntVec2(const char* uniform_name, glm::uvec2 vec, bool bind_shader = true);
|
void set_uniform_uint_vec2(const char* uniform_name, glm::uvec2 vec, bool bind_shader = true);
|
||||||
|
|
||||||
void setUniformUIntVec3(GLint location, glm::uvec3 vec, bool bind_shader = true);
|
void set_uniform_uint_vec3(GLint location, glm::uvec3 vec, bool bind_shader = true);
|
||||||
void setUniformUIntVec3(const char* uniform_name, glm::uvec3 vec, bool bind_shader = true);
|
void set_uniform_uint_vec3(const char* uniform_name, glm::uvec3 vec, bool bind_shader = true);
|
||||||
|
|
||||||
void setUniformUIntVec4(GLint location, glm::uvec4 vec, bool bind_shader = true);
|
void set_uniform_uint_vec4(GLint location, glm::uvec4 vec, bool bind_shader = true);
|
||||||
void setUniformUIntVec4(const char* uniform_name, glm::uvec4 vec, bool bind_shader = true);
|
void set_uniform_uint_vec4(const char* uniform_name, glm::uvec4 vec, bool bind_shader = true);
|
||||||
};
|
};
|
||||||
}
|
}
|
|
@ -1,6 +1,7 @@
|
||||||
#include "gfx/shader.h"
|
#include "gfx/shader.h"
|
||||||
|
|
||||||
#include <glm/fwd.hpp>
|
#include <glm/fwd.hpp>
|
||||||
|
#include <glm/gtc/type_ptr.hpp>
|
||||||
#include <memory>
|
#include <memory>
|
||||||
|
|
||||||
namespace simpleengine::gfx {
|
namespace simpleengine::gfx {
|
||||||
|
@ -41,7 +42,7 @@ namespace simpleengine::gfx {
|
||||||
throw ShaderException("Failed to compile shader!");
|
throw ShaderException("Failed to compile shader!");
|
||||||
}
|
}
|
||||||
|
|
||||||
glAttachShader(*shd.program, shd.shader);
|
shd.attach(shd.program);
|
||||||
|
|
||||||
return shd;
|
return shd;
|
||||||
}
|
}
|
||||||
|
@ -105,7 +106,11 @@ namespace simpleengine::gfx {
|
||||||
glUseProgram(0);
|
glUseProgram(0);
|
||||||
}
|
}
|
||||||
|
|
||||||
GLfloat Shader::getUniformFloat(GLint location) const {
|
void Shader::attach(std::shared_ptr<GLuint> program) {
|
||||||
|
glAttachShader(*program, shader);
|
||||||
|
}
|
||||||
|
|
||||||
|
GLfloat Shader::get_uniform_float(GLint location) const {
|
||||||
use();
|
use();
|
||||||
|
|
||||||
GLfloat fl;
|
GLfloat fl;
|
||||||
|
@ -114,12 +119,12 @@ namespace simpleengine::gfx {
|
||||||
return fl;
|
return fl;
|
||||||
}
|
}
|
||||||
|
|
||||||
GLfloat Shader::getUniformFloat(const char* uniform_name) const {
|
GLfloat Shader::get_uniform_float(const char* uniform_name) const {
|
||||||
int location = glGetUniformLocation(*program, uniform_name);
|
int location = glGetUniformLocation(*program, uniform_name);
|
||||||
return getUniformFloat(location);
|
return get_uniform_float(location);
|
||||||
}
|
}
|
||||||
|
|
||||||
GLint Shader::getUniformInt(GLint location) const {
|
GLint Shader::get_uniform_int(GLint location) const {
|
||||||
use();
|
use();
|
||||||
|
|
||||||
GLint _int;
|
GLint _int;
|
||||||
|
@ -128,12 +133,12 @@ namespace simpleengine::gfx {
|
||||||
return _int;
|
return _int;
|
||||||
}
|
}
|
||||||
|
|
||||||
GLint Shader::getUniformInt(const char* uniform_name) const {
|
GLint Shader::get_uniform_int(const char* uniform_name) const {
|
||||||
int location = glGetUniformLocation(*program, uniform_name);
|
int location = glGetUniformLocation(*program, uniform_name);
|
||||||
return getUniformInt(location);
|
return get_uniform_int(location);
|
||||||
}
|
}
|
||||||
|
|
||||||
GLuint Shader::getUniformUInt(GLint location) const {
|
GLuint Shader::get_uniform_uint(GLint location) const {
|
||||||
use();
|
use();
|
||||||
|
|
||||||
GLuint _uint;
|
GLuint _uint;
|
||||||
|
@ -142,12 +147,12 @@ namespace simpleengine::gfx {
|
||||||
return _uint;
|
return _uint;
|
||||||
}
|
}
|
||||||
|
|
||||||
GLuint Shader::getUniformUInt(const char* uniform_name) const {
|
GLuint Shader::get_uniform_uint(const char* uniform_name) const {
|
||||||
int location = glGetUniformLocation(*program, uniform_name);
|
int location = glGetUniformLocation(*program, uniform_name);
|
||||||
return getUniformUInt(location);
|
return get_uniform_uint(location);
|
||||||
}
|
}
|
||||||
|
|
||||||
GLdouble Shader::getUniformDouble(GLint location) const {
|
GLdouble Shader::get_uniform_double(GLint location) const {
|
||||||
use();
|
use();
|
||||||
|
|
||||||
GLdouble dbl;
|
GLdouble dbl;
|
||||||
|
@ -156,188 +161,188 @@ namespace simpleengine::gfx {
|
||||||
return dbl;
|
return dbl;
|
||||||
}
|
}
|
||||||
|
|
||||||
GLdouble Shader::getUniformDouble(const char* uniform_name) const {
|
GLdouble Shader::get_uniform_double(const char* uniform_name) const {
|
||||||
int location = glGetUniformLocation(*program, uniform_name);
|
int location = glGetUniformLocation(*program, uniform_name);
|
||||||
return getUniformDouble(location);
|
return get_uniform_double(location);
|
||||||
}
|
}
|
||||||
|
|
||||||
void Shader::setUniformFloat(GLint location, GLfloat fl, bool bind_shader) {
|
void Shader::set_uniform_float(GLint location, GLfloat fl, bool bind_shader) {
|
||||||
if (bind_shader) {
|
if (bind_shader) {
|
||||||
use();
|
use();
|
||||||
}
|
}
|
||||||
glUniform1f(location, fl);
|
glUniform1fv(location, 1, &fl);
|
||||||
if (bind_shader) {
|
if (bind_shader) {
|
||||||
unuse();
|
unuse();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void Shader::setUniformFloat(const char* uniform_name, GLfloat fl, bool bind_shader) {
|
void Shader::set_uniform_float(const char* uniform_name, GLfloat fl, bool bind_shader) {
|
||||||
int location = glGetUniformLocation(*program, uniform_name);
|
int location = glGetUniformLocation(*program, uniform_name);
|
||||||
setUniformFloat(location, fl, bind_shader);
|
set_uniform_float(location, fl, bind_shader);
|
||||||
}
|
}
|
||||||
|
|
||||||
void Shader::setUniformFloatVec2(GLint location, glm::vec2 vec, bool bind_shader) {
|
void Shader::set_uniform_float_vec2(GLint location, glm::vec2 vec, bool bind_shader) {
|
||||||
if (bind_shader) {
|
if (bind_shader) {
|
||||||
use();
|
use();
|
||||||
}
|
}
|
||||||
glUniform2f(location, vec.x, vec.y);
|
glUniform2fv(location, 1, glm::value_ptr(vec));
|
||||||
if (bind_shader) {
|
if (bind_shader) {
|
||||||
unuse();
|
unuse();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void Shader::setUniformFloatVec2(const char* uniform_name, glm::vec2 vec, bool bind_shader) {
|
void Shader::set_uniform_float_vec2(const char* uniform_name, glm::vec2 vec, bool bind_shader) {
|
||||||
int location = glGetUniformLocation(*program, uniform_name);
|
int location = glGetUniformLocation(*program, uniform_name);
|
||||||
setUniformFloatVec2(location, vec, bind_shader);
|
set_uniform_float_vec2(location, vec, bind_shader);
|
||||||
}
|
}
|
||||||
|
|
||||||
void Shader::setUniformFloatVec3(GLint location, glm::vec3 vec, bool bind_shader) {
|
void Shader::set_uniform_float_vec3(GLint location, glm::vec3 vec, bool bind_shader) {
|
||||||
if (bind_shader) {
|
if (bind_shader) {
|
||||||
use();
|
use();
|
||||||
}
|
}
|
||||||
glUniform3f(location, vec.x, vec.y, vec.z);
|
glUniform3fv(location, 1, glm::value_ptr(vec));
|
||||||
if (bind_shader) {
|
if (bind_shader) {
|
||||||
unuse();
|
unuse();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void Shader::setUniformFloatVec3(const char* uniform_name, glm::vec3 vec, bool bind_shader) {
|
void Shader::set_uniform_float_vec3(const char* uniform_name, glm::vec3 vec, bool bind_shader) {
|
||||||
int location = glGetUniformLocation(*program, uniform_name);
|
int location = glGetUniformLocation(*program, uniform_name);
|
||||||
setUniformFloatVec3(location, vec, bind_shader);
|
set_uniform_float_vec3(location, vec, bind_shader);
|
||||||
}
|
}
|
||||||
|
|
||||||
void Shader::setUniformFloatVec4(GLint location, glm::vec4 vec, bool bind_shader) {
|
void Shader::set_uniform_float_vec4(GLint location, glm::vec4 vec, bool bind_shader) {
|
||||||
if (bind_shader) {
|
if (bind_shader) {
|
||||||
use();
|
use();
|
||||||
}
|
}
|
||||||
glUniform4f(location, vec.x, vec.y, vec.z, vec.w);
|
glUniform4fv(location, 1, glm::value_ptr(vec));
|
||||||
if (bind_shader) {
|
if (bind_shader) {
|
||||||
unuse();
|
unuse();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void Shader::setUniformFloatVec4(const char* uniform_name, glm::vec4 vec, bool bind_shader) {
|
void Shader::set_uniform_float_vec4(const char* uniform_name, glm::vec4 vec, bool bind_shader) {
|
||||||
int location = glGetUniformLocation(*program, uniform_name);
|
int location = glGetUniformLocation(*program, uniform_name);
|
||||||
setUniformFloatVec4(location, vec, bind_shader);
|
set_uniform_float_vec4(location, vec, bind_shader);
|
||||||
}
|
}
|
||||||
|
|
||||||
void Shader::setUniformInt(GLint location, GLint i, bool bind_shader) {
|
void Shader::set_uniform_int(GLint location, GLint i, bool bind_shader) {
|
||||||
if (bind_shader) {
|
if (bind_shader) {
|
||||||
use();
|
use();
|
||||||
}
|
}
|
||||||
glUniform1i(location, i);
|
glUniform1iv(location, 1, &i);
|
||||||
if (bind_shader) {
|
if (bind_shader) {
|
||||||
unuse();
|
unuse();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void Shader::setUniformInt(const char* uniform_name, GLint i, bool bind_shader) {
|
void Shader::set_uniform_int(const char* uniform_name, GLint i, bool bind_shader) {
|
||||||
int location = glGetUniformLocation(*program, uniform_name);
|
int location = glGetUniformLocation(*program, uniform_name);
|
||||||
setUniformInt(location, i, bind_shader);
|
set_uniform_int(location, i, bind_shader);
|
||||||
}
|
}
|
||||||
|
|
||||||
void Shader::setUniformIntVec2(GLint location, glm::ivec2 vec, bool bind_shader) {
|
void Shader::set_uniform_int_vec2(GLint location, glm::ivec2 vec, bool bind_shader) {
|
||||||
if (bind_shader) {
|
if (bind_shader) {
|
||||||
use();
|
use();
|
||||||
}
|
}
|
||||||
glUniform2i(location, vec.x, vec.y);
|
glUniform2iv(location, 1, glm::value_ptr(vec));
|
||||||
if (bind_shader) {
|
if (bind_shader) {
|
||||||
unuse();
|
unuse();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void Shader::setUniformIntVec2(const char* uniform_name, glm::ivec2 vec, bool bind_shader) {
|
void Shader::set_uniform_int_vec2(const char* uniform_name, glm::ivec2 vec, bool bind_shader) {
|
||||||
int location = glGetUniformLocation(*program, uniform_name);
|
int location = glGetUniformLocation(*program, uniform_name);
|
||||||
setUniformIntVec2(location, vec, bind_shader);
|
set_uniform_int_vec2(location, vec, bind_shader);
|
||||||
}
|
}
|
||||||
|
|
||||||
void Shader::setUniformIntVec3(GLint location, glm::ivec3 vec, bool bind_shader) {
|
void Shader::set_uniform_int_vec3(GLint location, glm::ivec3 vec, bool bind_shader) {
|
||||||
if (bind_shader) {
|
if (bind_shader) {
|
||||||
use();
|
use();
|
||||||
}
|
}
|
||||||
glUniform3i(location, vec.x, vec.y, vec.z);
|
glUniform3iv(location, 1, glm::value_ptr(vec));
|
||||||
if (bind_shader) {
|
if (bind_shader) {
|
||||||
unuse();
|
unuse();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void Shader::setUniformIntVec3(const char* uniform_name, glm::ivec3 vec, bool bind_shader) {
|
void Shader::set_uniform_int_vec3(const char* uniform_name, glm::ivec3 vec, bool bind_shader) {
|
||||||
int location = glGetUniformLocation(*program, uniform_name);
|
int location = glGetUniformLocation(*program, uniform_name);
|
||||||
setUniformIntVec3(location, vec, bind_shader);
|
set_uniform_int_vec3(location, vec, bind_shader);
|
||||||
}
|
}
|
||||||
|
|
||||||
void Shader::setUniformIntVec4(GLint location, glm::ivec4 vec, bool bind_shader) {
|
void Shader::set_uniform_int_vec4(GLint location, glm::ivec4 vec, bool bind_shader) {
|
||||||
if (bind_shader) {
|
if (bind_shader) {
|
||||||
use();
|
use();
|
||||||
}
|
}
|
||||||
glUniform4i(location, vec.x, vec.y, vec.z, vec.w);
|
glUniform4iv(location, 1, glm::value_ptr(vec));
|
||||||
if (bind_shader) {
|
if (bind_shader) {
|
||||||
unuse();
|
unuse();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void Shader::setUniformIntVec4(const char* uniform_name, glm::ivec4 vec, bool bind_shader) {
|
void Shader::set_uniform_int_vec4(const char* uniform_name, glm::ivec4 vec, bool bind_shader) {
|
||||||
int location = glGetUniformLocation(*program, uniform_name);
|
int location = glGetUniformLocation(*program, uniform_name);
|
||||||
setUniformIntVec4(location, vec, bind_shader);
|
set_uniform_int_vec4(location, vec, bind_shader);
|
||||||
}
|
}
|
||||||
|
|
||||||
void Shader::setUniformUInt(GLint location, GLuint ui, bool bind_shader) {
|
void Shader::set_uniform_uint(GLint location, GLuint ui, bool bind_shader) {
|
||||||
if (bind_shader) {
|
if (bind_shader) {
|
||||||
use();
|
use();
|
||||||
}
|
}
|
||||||
glUniform1ui(location, ui);
|
glUniform1uiv(location, 1, &ui);
|
||||||
if (bind_shader) {
|
if (bind_shader) {
|
||||||
unuse();
|
unuse();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void Shader::setUniformUInt(const char* uniform_name, GLuint ui, bool bind_shader) {
|
void Shader::set_uniform_uint(const char* uniform_name, GLuint ui, bool bind_shader) {
|
||||||
int location = glGetUniformLocation(*program, uniform_name);
|
int location = glGetUniformLocation(*program, uniform_name);
|
||||||
setUniformUInt(location, ui, bind_shader);
|
set_uniform_uint(location, ui, bind_shader);
|
||||||
}
|
}
|
||||||
|
|
||||||
void Shader::setUniformUIntVec2(GLint location, glm::uvec2 vec, bool bind_shader) {
|
void Shader::set_uniform_uint_vec2(GLint location, glm::uvec2 vec, bool bind_shader) {
|
||||||
if (bind_shader) {
|
if (bind_shader) {
|
||||||
use();
|
use();
|
||||||
}
|
}
|
||||||
glUniform2ui(location, vec.x, vec.y);
|
glUniform2uiv(location, 1,glm::value_ptr(vec));
|
||||||
if (bind_shader) {
|
if (bind_shader) {
|
||||||
unuse();
|
unuse();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void Shader::setUniformUIntVec2(const char* uniform_name, glm::uvec2 vec, bool bind_shader) {
|
void Shader::set_uniform_uint_vec2(const char* uniform_name, glm::uvec2 vec, bool bind_shader) {
|
||||||
int location = glGetUniformLocation(*program, uniform_name);
|
int location = glGetUniformLocation(*program, uniform_name);
|
||||||
setUniformUIntVec2(location, vec, bind_shader);
|
set_uniform_uint_vec2(location, vec, bind_shader);
|
||||||
}
|
}
|
||||||
|
|
||||||
void Shader::setUniformUIntVec3(GLint location, glm::uvec3 vec, bool bind_shader) {
|
void Shader::set_uniform_uint_vec3(GLint location, glm::uvec3 vec, bool bind_shader) {
|
||||||
if (bind_shader) {
|
if (bind_shader) {
|
||||||
use();
|
use();
|
||||||
}
|
}
|
||||||
glUniform3ui(location, vec.x, vec.y, vec.z);
|
glUniform3uiv(location, 1, glm::value_ptr(vec));
|
||||||
if (bind_shader) {
|
if (bind_shader) {
|
||||||
unuse();
|
unuse();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void Shader::setUniformUIntVec3(const char* uniform_name, glm::uvec3 vec, bool bind_shader) {
|
void Shader::set_uniform_uint_vec3(const char* uniform_name, glm::uvec3 vec, bool bind_shader) {
|
||||||
int location = glGetUniformLocation(*program, uniform_name);
|
int location = glGetUniformLocation(*program, uniform_name);
|
||||||
setUniformUIntVec3(location, vec, bind_shader);
|
set_uniform_uint_vec3(location, vec, bind_shader);
|
||||||
}
|
}
|
||||||
|
|
||||||
void Shader::setUniformUIntVec4(GLint location, glm::uvec4 vec, bool bind_shader) {
|
void Shader::set_uniform_uint_vec4(GLint location, glm::uvec4 vec, bool bind_shader) {
|
||||||
if (bind_shader) {
|
if (bind_shader) {
|
||||||
use();
|
use();
|
||||||
}
|
}
|
||||||
glUniform4ui(location, vec.x, vec.y, vec.z, vec.w);
|
glUniform4uiv(location, 1, glm::value_ptr(vec));
|
||||||
if (bind_shader) {
|
if (bind_shader) {
|
||||||
unuse();
|
unuse();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void Shader::setUniformUIntVec4(const char* uniform_name, glm::uvec4 vec, bool bind_shader) {
|
void Shader::set_uniform_uint_vec4(const char* uniform_name, glm::uvec4 vec, bool bind_shader) {
|
||||||
int location = glGetUniformLocation(*program, uniform_name);
|
int location = glGetUniformLocation(*program, uniform_name);
|
||||||
setUniformUIntVec4(location, vec, bind_shader);
|
set_uniform_uint_vec4(location, vec, bind_shader);
|
||||||
}
|
}
|
||||||
}
|
}
|
|
@ -10,6 +10,9 @@ namespace simpleengine::shapes_2d {
|
||||||
vao.enable_attrib(vbo, 1, 3, GL_FLOAT, sizeof(Vertex), offsetof(Vertex, color));
|
vao.enable_attrib(vbo, 1, 3, GL_FLOAT, sizeof(Vertex), offsetof(Vertex, color));
|
||||||
vao.enable_attrib(vbo, 2, 2, GL_FLOAT, sizeof(Vertex), offsetof(Vertex, tex_coord));
|
vao.enable_attrib(vbo, 2, 2, GL_FLOAT, sizeof(Vertex), offsetof(Vertex, tex_coord));
|
||||||
|
|
||||||
|
// Tell the shader that there is no texture.
|
||||||
|
shader.set_uniform_int("texture_is_set", false);
|
||||||
|
|
||||||
glBindBuffer(GL_ARRAY_BUFFER, 0);
|
glBindBuffer(GL_ARRAY_BUFFER, 0);
|
||||||
glBindVertexArray(0);
|
glBindVertexArray(0);
|
||||||
}
|
}
|
||||||
|
@ -21,6 +24,9 @@ namespace simpleengine::shapes_2d {
|
||||||
|
|
||||||
void Triangle::set_texture(gfx::Texture texture) {
|
void Triangle::set_texture(gfx::Texture texture) {
|
||||||
this->texture = texture;
|
this->texture = texture;
|
||||||
|
|
||||||
|
// Tell the shader that there is a texture set.
|
||||||
|
shader.set_uniform_int("texture_is_set", true);
|
||||||
}
|
}
|
||||||
|
|
||||||
void Triangle::update(const float& delta_time) {
|
void Triangle::update(const float& delta_time) {
|
||||||
|
@ -30,12 +36,8 @@ namespace simpleengine::shapes_2d {
|
||||||
void Triangle::render(std::shared_ptr<GLFWwindow> target) {
|
void Triangle::render(std::shared_ptr<GLFWwindow> target) {
|
||||||
shader.use();
|
shader.use();
|
||||||
|
|
||||||
// If theres a texture set, tell the fragment shader that and bind to the texture for drawing.
|
|
||||||
if (texture.has_value()) {
|
if (texture.has_value()) {
|
||||||
shader.setUniformInt("texture_is_set", true, false);
|
|
||||||
texture.value().bind();
|
texture.value().bind();
|
||||||
} else {
|
|
||||||
shader.setUniformInt("texture_is_set", false, false);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
vao.bind();
|
vao.bind();
|
||||||
|
|
Loading…
Reference in New Issue