aerys / minko

3D framework for web, desktop and mobile devices.
http://minko.io
Other
905 stars 210 forks source link

Creating 2 sprites in different contexts fails #145

Closed blanchg closed 10 years ago

blanchg commented 10 years ago

Because the Sprite class uses a static GEOM using it inside another context will fail as the context dependent buffers like vertex and index will be associated with the first context.

If you modify sprite to use a new BillboardGeometry instance it works fine.

Using any of the static getters in any of the Geometry classes will fail in the same way. e.g. QuadGeometry.quadGeometry

Pseudo Code:

// Open new view
var viewport:Viewport = new Viewport();
var scene:Scene = new Scene();
var sprite:Sprite = new Sprite();
scene.addChild(sprite);
...
scene.render(viewport);
...
// Close view
viewport.dispose();
...
// Open new view
var viewport:Viewport = new Viewport();
var scene:Scene = new Scene();
var sprite:Sprite = new Sprite();
scene.addChild(sprite);
...
scene.render(viewport); // Will fail here with Error #3601: No valid index buffer set
blanchg commented 10 years ago

I solved this by using a shared Viewport. i.e. only ever creating 1 viewport and just reusing it for each view.