我已经实现了一个简单的2D渲染器,但它不能用于纹理或动态对象。
首先要说的是我有4 classes
我认为是最重要的。 Renderer
,Scene
,Sprite
,SpriteBatch
。
为了解释我在做什么,我将写一个简单的例子。
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
。但是,我无法看到如何将sprite1
,Sprite
和Scene
连接在一起,以实现"动态"配料。
实现这一目标的常用技巧是什么,或者您能想到一种方法来实现我想要的目标吗?