glsl-effect: Allow to set uniform matrices
Add support for setting a uniform matrix on GLSLEffect because the color vision deficiency simulation extension requires it. Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/2164>
This commit is contained in:
parent
e07bc62fbd
commit
170f3ee089
@ -179,3 +179,27 @@ shell_glsl_effect_set_uniform_float (ShellGLSLEffect *effect,
|
||||
n_components, total_count / n_components,
|
||||
value);
|
||||
}
|
||||
|
||||
/**
|
||||
* shell_glsl_effect_set_uniform_matrix:
|
||||
* @effect: a #ShellGLSLEffect
|
||||
* @uniform: the uniform location (as returned by shell_glsl_effect_get_uniform_location())
|
||||
* @transpose: Whether to transpose the matrix
|
||||
* @dimensions: the number of components in the uniform (eg. 3 for a vec3)
|
||||
* @total_count: the total number of floats in @value
|
||||
* @value: (array length=total_count): the array of floats to set @uniform
|
||||
*/
|
||||
void
|
||||
shell_glsl_effect_set_uniform_matrix (ShellGLSLEffect *effect,
|
||||
int uniform,
|
||||
gboolean transpose,
|
||||
int dimensions,
|
||||
int total_count,
|
||||
const float *value)
|
||||
{
|
||||
ShellGLSLEffectPrivate *priv = shell_glsl_effect_get_instance_private (effect);
|
||||
cogl_pipeline_set_uniform_matrix (priv->pipeline, uniform,
|
||||
dimensions,
|
||||
total_count / (dimensions * dimensions),
|
||||
transpose, value);
|
||||
}
|
||||
|
@ -52,5 +52,11 @@ void shell_glsl_effect_set_uniform_float (ShellGLSLEffect *effect,
|
||||
int n_components,
|
||||
int total_count,
|
||||
const float *value);
|
||||
void shell_glsl_effect_set_uniform_matrix (ShellGLSLEffect *effect,
|
||||
int uniform,
|
||||
gboolean transpose,
|
||||
int dimensions,
|
||||
int total_count,
|
||||
const float *value);
|
||||
|
||||
#endif /* __SHELL_GLSL_EFFECT_H__ */
|
||||
|
Loading…
Reference in New Issue
Block a user