我正在尝试使用Processing 2.0的Shaders。 作为理解Point Shaders的一个简单的例外,我已经在Sprite类中实现了一个系统:
这意味着我可以在顶点着色器中执行基本的动画序列。我不知道这是否可取,但我怀疑它会比每次我想更改帧时在片段着色器中设置一个新的统一sampler2D更好。
我的问题是 - 如何在多个实例中使用此着色器?如果我想同时在屏幕上显示两个Sprite,每个Sprite都有不同的值(即播放不同的动画帧),如果每个Sprite都有自己的pointShader,那么如何在内存中拥有统一的Sampler2D副本?
希望你能提供帮助。
答案 0 :(得分:0)
是的,这种方法比每帧设置新纹理要好得多。
要绘制多个精灵,只需使用相同的程序,并使用不同的制服逐个绘制对象:
1:glUseProgram(yourprogram);
2:..设置第一个对象的纹理和uv
3:..第一个对象
4:..设置新纹理(或保持相同的纹理是精灵有) ..设置第二个对象的紫外线
5:..第二个对象等等
编辑:程序不受您设置的制服的约束,您可以随时更改并再次调用绘图。