charcoal/OpenGLEngine/GLUtil.cpp

60 lines
1.4 KiB
C++
Raw Normal View History

#include "GLUtil.h"
#include "stdafx.h"
namespace charcoal
{
namespace builtin
{
namespace glutil
{
void clear_screen()
{
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
}
2018-09-14 22:09:43 +00:00
void uniform_int(int uniform_index, int value)
{
glUniform1i(uniform_index, value);
}
void uniform_uint(int uniform_index, unsigned int value)
{
glUniform1ui(uniform_index, value);
}
void uniform_float(int uniform_index, float value)
{
glUniform1f(uniform_index, value);
}
void uniform_vec3(int uniform_index, const vec3& value)
{
glUniform3fv(uniform_index, 1, &value[0]);
}
void uniform_matrix(int uniform_index, const mat4& matrix, bool transpose)
{
glUniformMatrix4fv(uniform_index, 1, transpose ? GL_TRUE : GL_FALSE, &matrix[0][0]);
}
2018-09-14 22:09:43 +00:00
void uniform_lights(int uniform_index, const std::vector<Light>& lights)
{
const int position_size = 1;
2018-09-14 22:09:43 +00:00
const int ambient_size = 1;
const int diffuse_size = 1;
const int specular_exponent_size = 1;
2018-09-14 22:09:43 +00:00
int current_location = uniform_index;
for (std::vector<Light>::size_type i = 0; i < lights.size(); ++i)
{
glUniform3fv(current_location, 1, &lights[i].position[0]);
current_location += position_size;
2018-09-14 22:09:43 +00:00
glUniform3fv(current_location, 1, &lights[i].ambient[0]);
current_location += ambient_size;
glUniform3fv(current_location, 1, &lights[i].diffuse[0]);
current_location += diffuse_size;
2018-09-14 22:09:43 +00:00
}
}
}
}
}