假设我有2个着色器:
shader1 = '''
$HEADER$
uniform float time;
uniform vec2 resolution;
void main(void)
{
vec2 position = (gl_FragCoord.xy / resolution.xy);
float color = 0.0;
color += position.y / position.x;
if(color < abs(sin(time))) { color = 0.5 * abs(sin(time)) + 0.2; }
vec3 output_color = vec3(color * 1.5, color, color * 2.0);
gl_FragColor = vec4(output_color, 1.0);
}
'''
shader2 = '''
$HEADER$
uniform float time;
uniform vec2 resolution;
void main(void)
{
vec2 position = (gl_FragCoord.xy / resolution.xy);
float color = 0.0;
color += position.y / position.x;
if(color < abs(sin(time))) { color = 0.5 * abs(sin(time)) + 0.2; }
vec3 output_color = vec3(color * 1., color*1.2, color * 1.5);
gl_FragColor = vec4(output_color, 1.0);
}
'''
或其他使用制服分辨率和时间的人。
例如,我希望shader_1填充应用程序屏幕的左半部分,shader_2填充-右半部分。
可以这样做吗?
我试图从kivy的官方github存储库中更改示例,但没有成功。
我没有找到任何使用几个具有可变分辨率和时间的着色器的示例。
为什么? 我想使用主要在glsl着色器上编写的元素(按钮等)编写一些应用程序,因为它们给人的吸引力和灵活性给我留下了深刻的印象