Gawain: convenience functions for uniform color

Application code can pass ubytes, Gawain converts to float vec4 expected by shader.

For now the conversion is simple linear. We can add sRGB support later if needed.
This commit is contained in:
2016-08-27 14:10:37 -04:00
parent 42bbfe7f0a
commit 9d3813e602
2 changed files with 17 additions and 0 deletions

View File

@@ -91,3 +91,8 @@ void immVertex3fv(unsigned attrib_id, const float data[3]);
// provide values that don't change for the entire draw call
void immUniform4f(const char* name, float x, float y, float z, float w);
// these set "uniform vec4 color"
// TODO: treat as sRGB?
void immUniformColor3ubv(const unsigned char data[3]);
void immUniformColor4ubv(const unsigned char data[4]);

View File

@@ -729,3 +729,15 @@ void immUniform4f(const char* name, float x, float y, float z, float w)
glUniform4f(loc, x, y, z, w);
}
void immUniformColor3ubv(const unsigned char rgb[3])
{
const float scale = 1.0f / 255.0f;
immUniform4f("color", scale * rgb[0], scale * rgb[1], scale * rgb[2], 1.0f);
}
void immUniformColor4ubv(const unsigned char rgba[4])
{
const float scale = 1.0f / 255.0f;
immUniform4f("color", scale * rgba[0], scale * rgba[1], scale * rgba[2], rgba[3]);
}