我已经实现了一个简单的 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
是在第一次将 a 添加到场景时创建的Sprite
,并且所有进一步Sprites
添加到场景的内容都将附加到同一场景中,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
并SpriteBatch
一起实现“动态”批处理。
实现这一目标的常用技术是什么,或者你能想到一种实现我想要的方法吗?