动态精灵批处理

时间:2017-06-21 08:52:08

标签: webgl sprite batching

我已经实现了一个简单的2D渲染器,但它不能用于纹理或动态对象。

首先要说的是我有4 classes我认为是最重要的。 RendererSceneSpriteSpriteBatch

为了解释我在做什么,我将写一个简单的例子。

var renderer = new Renderer();
var scene = new Scene();
var sprite1 = new Sprite();
scene.add(sprite1);
function render(){
    sprite1.x += 0.01;
    renderer.render(scene);
}
render();

在场景中发生的事情是,new SpriteBatch是在第一次向场景添加Sprite时创建的,并且添加到场景中的所有其他Sprites将附加到同一{{1}直到SpriteBatch已满。

所以我的问题是SpriteBatch

vertices
调用new Float32Array([-0.5, -0.5, 0.5, -0.5, -0.5, 0.5, -0.5, 0.5, 0.5, -0.5, 0.5, 0.5]); 时计算

。由于scene.add(sprite1)位于large vertexbuffer内,因此动画制作非常不同。因此,在致电SpriteBatch时,我只想更新属于sprite1.x+= 0.01的这些vertices。但是,我无法看到如何将sprite1SpriteScene连接在一起,以实现"动态"配料。

实现这一目标的常用技巧是什么,或者您能想到一种方法来实现我想要的目标吗?

0 个答案:

没有答案