我正在尝试使用处理2.0的着色器。 作为一个简单的偶尔在理解点着色器一点更好,我已经实现了一个在Sprite类中的系统:

  1. 我将SPRITESH表设置为片段着色器中的统一示例。 2048x 2048(12 x 12帧为128像素方形)
  2. 我创造了一个点。
  3. 我在顶点着色器中设置了uv坐标,以实现点。
  4. 我通过作为统一变量传递的整数偏移顶点着色器中的UV坐标,以在SPRITESHEET
  5. 中选择“帧”
  6. i更新整数(使用模数到循环),递增uv偏移应用程序中每5帧。
  7. 这意味着我可以从顶点着色器内完成基本的动画序列。如果这是可取的,我不知道这是可取的,但我怀疑每次想要更改帧时,它都会比在片段着色器中设置新的统一样本2d更好。

    我的问题是 - 如何在多个实例上使用此着色器?如果我想要在屏幕上的两个精灵,每个Sprites都有不同的值(即播放动画的不同帧),在没有每个具有自己的光学方向的情况下如何实现这一点,因此它自己的统一采样器2d的副本在内存中?

    希望你能提供帮助。

有帮助吗?

解决方案

是的,这种方法更好,然后每帧设置新纹理。

绘制多个精灵只使用相同的程序并使用不同的统一逐一绘制对象:

1:gluseprogram(yourprogram);

2:第一个对象的纹理和uv

3:..draw first对象

4:..set新纹理(或保持相同的纹理是精灵在那里) ..对于第二个对象

5:..draw第二对象等

编辑:程序不受您设置的统一绑定的绑定,您可以随时更改,然后再次调用绘制。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top