@@ -13,7 +13,7 @@ class Mesh extends Node {
1313 Texture texture;
1414 Texture texture2;
1515
16- Buffer verticesBuffer, colorsBuffer, textureCoordBuffer, normalsBuffer, vertexIndexBuffer;
16+ Buffer verticesBuffer, colorsBuffer, textureCoordBuffer, normalsBuffer, binormalsBuffer, vertexIndexBuffer;
1717
1818 int numItems;
1919
@@ -45,6 +45,12 @@ class Mesh extends Node {
4545 gl.bufferDataTyped (ARRAY_BUFFER , meshData.normals as Float32List , STATIC_DRAW );
4646 }
4747
48+ if ( meshData.binormals != null ) {
49+ binormalsBuffer = gl.createBuffer ();
50+ gl.bindBuffer (ARRAY_BUFFER , binormalsBuffer);
51+ gl.bufferDataTyped (ARRAY_BUFFER , meshData.binormals as Float32List , STATIC_DRAW );
52+ }
53+
4854 if ( meshData.vertexIndices != null ) {
4955 numItems = meshData.vertexIndices.length;
5056 vertexIndexBuffer = gl.createBuffer ();
@@ -67,6 +73,9 @@ class Mesh extends Node {
6773 if ( normalsBuffer != null ) {
6874 gl.deleteBuffer ( normalsBuffer);
6975 }
76+ if ( binormalsBuffer != null ) {
77+ gl.deleteBuffer ( binormalsBuffer);
78+ }
7079 if ( vertexIndexBuffer != null ) {
7180 gl.deleteBuffer ( vertexIndexBuffer);
7281 }
@@ -109,6 +118,11 @@ class Mesh extends Node {
109118 gl.vertexAttribPointer (program.normalAttribute, 3 , FLOAT , false , 0 , 0 );
110119 }
111120
121+ if ( program.shaderObject.binormalAttribute != null ) {
122+ gl.bindBuffer (ARRAY_BUFFER , binormalsBuffer);
123+ gl.vertexAttribPointer (program.binormalAttribute, 3 , FLOAT , false , 0 , 0 );
124+ }
125+
112126 if ( program.shaderObject.textureSamplerUniform != null ) {
113127 gl.activeTexture (TEXTURE0 );
114128 gl.bindTexture (TEXTURE_2D , texture);
0 commit comments