@@ -25,30 +25,43 @@ class Mesh extends Node {
2525
2626 verticesBuffer = gl.createBuffer ();
2727 gl.bindBuffer (ARRAY_BUFFER , verticesBuffer);
28- gl.bufferDataTyped (ARRAY_BUFFER , meshData.vertices, STATIC_DRAW );
28+ gl.bufferDataTyped (ARRAY_BUFFER , meshData.vertices as Float32List , STATIC_DRAW );
2929
3030 if ( meshData.textureCoords != null ) {
3131 textureCoordBuffer = gl.createBuffer ();
3232 gl.bindBuffer (ARRAY_BUFFER , textureCoordBuffer);
33- gl.bufferDataTyped (ARRAY_BUFFER , meshData.textureCoords, STATIC_DRAW );
33+ gl.bufferDataTyped (ARRAY_BUFFER , meshData.textureCoords as Float32List , STATIC_DRAW );
3434 }
3535
3636 if ( meshData.normals != null ) {
3737 normalsBuffer = gl.createBuffer ();
3838 gl.bindBuffer (ARRAY_BUFFER , normalsBuffer);
39- gl.bufferDataTyped (ARRAY_BUFFER , meshData.normals, STATIC_DRAW );
39+ gl.bufferDataTyped (ARRAY_BUFFER , meshData.normals as Float32List , STATIC_DRAW );
4040 }
4141
4242 if ( meshData.vertexIndices != null ) {
4343 numItems = meshData.vertexIndices.length;
4444 vertexIndexBuffer = gl.createBuffer ();
4545 gl.bindBuffer (ELEMENT_ARRAY_BUFFER , vertexIndexBuffer);
46- gl.bufferDataTyped (ELEMENT_ARRAY_BUFFER , meshData.vertexIndices, STATIC_DRAW );
46+ gl.bufferDataTyped (ELEMENT_ARRAY_BUFFER , meshData.vertexIndices as Uint16List , STATIC_DRAW );
4747 } else {
4848 numItems = meshData.vertices.length ~ / 3 ;
4949 }
5050
5151 }
52+
53+ void clearData () {
54+ gl.deleteBuffer ( verticesBuffer);
55+ if ( textureCoordBuffer != null ) {
56+ gl.deleteBuffer ( textureCoordBuffer);
57+ }
58+ if ( normalsBuffer != null ) {
59+ gl.deleteBuffer ( normalsBuffer);
60+ }
61+ if ( vertexIndexBuffer != null ) {
62+ gl.deleteBuffer ( vertexIndexBuffer);
63+ }
64+ }
5265
5366 // this gets called by Node.draw()
5467 void draw2 ( ShaderProgram program) {
0 commit comments