@@ -96,8 +96,16 @@ Elm.Native.Graphics.WebGL.make = function(elm) {
9696
9797 }
9898
99+ var numIndices = List.length(bufferElems);
100+ var indices = List.toArray(List.range(0,numIndices));
101+ console.log("Created index buffer");
102+ var indexBuffer = gl.createBuffer();
103+ gl.bindBuffer(gl.ELEMENT_ARRAY_BUFFER, indexBuffer);
104+ gl.bufferData(gl.ELEMENT_ARRAY_BUFFER, new Uint16Array(indices), gl.STATIC_DRAW);
105+
99106 var bufferObject = {
100107 numIndices: List.length(bufferElems),
108+ indexBuffer: indexBuffer,
101109 buffers: buffers
102110 };
103111
@@ -129,12 +137,8 @@ Elm.Native.Graphics.WebGL.make = function(elm) {
129137 }
130138
131139 var numIndices = model.buffer.numIndices;
132− var indices = List.toArray(List.range(0,numIndices));
133−
134− console.log("Created index buffer");
135− var indexBuffer = gl.createBuffer();
140+ var indexBuffer = model.buffer.indexBuffer;
136141 gl.bindBuffer(gl.ELEMENT_ARRAY_BUFFER, indexBuffer);
137− gl.bufferData(gl.ELEMENT_ARRAY_BUFFER, new Uint16Array(indices), gl.STATIC_DRAW);
138142
139143 var numAttributes = gl.getProgramParameter(program, gl.ACTIVE_ATTRIBUTES);
140144 for (var i = 0; i < numAttributes; i += 1) {
@@ -162,14 +166,13 @@ Elm.Native.Graphics.WebGL.make = function(elm) {
162166
163167 }
164168
165− function webgl(sDimensions, sDraw) {
169+ function webgl(sDimensions, sfDraw) {
166170
167171 var node = newNode('canvas');
168172 var gl = node.getContext('webgl');
169173 var sGL = Signal.constant(gl);
170174
171− var application = F2(function(f,x) { return f(x); });
172− var sModels = A3(Signal.lift2,application,sDraw,sGL);
175+ var sModels = sfDraw(sGL);
173176
174177 function makeGLelement(dimensions, models, gl) {
175178