@@ -13,7 +13,7 @@ class Mesh extends Node {
1313 Texture texture;
1414 Texture texture2;
1515
16- Buffer verticesBuffer, textureCoordBuffer, normalsBuffer, vertexIndexBuffer;
16+ Buffer verticesBuffer, colorsBuffer, textureCoordBuffer, normalsBuffer, vertexIndexBuffer;
1717
1818 int numItems;
1919
@@ -27,6 +27,12 @@ class Mesh extends Node {
2727 gl.bindBuffer (ARRAY_BUFFER , verticesBuffer);
2828 gl.bufferDataTyped (ARRAY_BUFFER , meshData.vertices as Float32List , STATIC_DRAW );
2929
30+ if ( meshData.colors != null ) {
31+ colorsBuffer = gl.createBuffer ();
32+ gl.bindBuffer (ARRAY_BUFFER , colorsBuffer);
33+ gl.bufferDataTyped (ARRAY_BUFFER , meshData.colors as Float32List , STATIC_DRAW );
34+ }
35+
3036 if ( meshData.textureCoords != null ) {
3137 textureCoordBuffer = gl.createBuffer ();
3238 gl.bindBuffer (ARRAY_BUFFER , textureCoordBuffer);
@@ -52,6 +58,9 @@ class Mesh extends Node {
5258
5359 void clearData () {
5460 gl.deleteBuffer ( verticesBuffer);
61+ if ( colorsBuffer != null ) {
62+ gl.deleteBuffer ( colorsBuffer);
63+ }
5564 if ( textureCoordBuffer != null ) {
5665 gl.deleteBuffer ( textureCoordBuffer);
5766 }
@@ -85,6 +94,11 @@ class Mesh extends Node {
8594 gl.bindBuffer (ARRAY_BUFFER , verticesBuffer);
8695 gl.vertexAttribPointer (program.vertexPositionAttribute, 3 , FLOAT , false , 0 , 0 );
8796
97+ if ( program.shaderObject.colorsAttribute != null ) {
98+ gl.bindBuffer (ARRAY_BUFFER , colorsBuffer);
99+ gl.vertexAttribPointer (program.colorsAttribute, 3 , FLOAT , false , 0 , 0 );
100+ }
101+
88102 if ( program.shaderObject.textureCoordinatesAttribute != null ) {
89103 gl.bindBuffer (ARRAY_BUFFER , textureCoordBuffer);
90104 gl.vertexAttribPointer (program.textureCoordAttribute, 2 , FLOAT , false , 0 , 0 );
0 commit comments