1

我已经实现了一个简单的 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. 但是我看不到如何连接SpriteSceneSpriteBatch一起实现“动态”批处理。

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

4

0 回答 0