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:
@@ -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]);
|
||||
|
||||
@@ -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]);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user