我正在尝试使用 Processing 2.0 的着色器。作为更好地理解点着色器的简单练习,我在 Sprite 类中实现了一个系统:
- 我在片段着色器中将 spritesheet 设置为统一的 sampler2D。2048x 2048(12 x 12 帧 128 像素正方形)
- 我创建一个点。
- 我在顶点着色器中为该点设置了 uv 坐标。
- 我将顶点着色器中的 UV 坐标偏移了一个作为统一变量传入的整数,以在 spritesheet 中选择“帧”
- 我在应用程序中每 5 帧更新一次整数(使用模数循环和)增加 UV 偏移量。
这意味着我可以在顶点着色器中做基本的动画序列。我不知道这是否是可取的,但我怀疑它会比每次我想更改帧时在片段着色器中设置一个新的统一 sampler2D 更好。
我的问题是 - 我如何在多个实例中使用这个着色器?如果我想同时在屏幕上显示两个精灵,每个精灵都有不同的值(即播放动画的不同帧),如果每个精灵都没有自己的 pointShader 并因此在内存中拥有自己的统一 Sampler2D 副本,如何实现这一点?
希望你能帮忙。